【问题标题】:Protecting specific folder/path (Web Service) with Basic Authentication使用基本身份验证保护特定文件夹/路径(Web 服务)
【发布时间】:2016-12-22 15:40:10
【问题描述】:

所以我有这个在特定 URL ( www.someurl.com ) 上运行的 C# / ASP.NET 4.5 Web 应用程序。此应用程序在本地运行,并使用 Visual Studio 的“发布 Web 应用程序”功能部署到测试和生产服务器(Windows 2012 R2 和 IIS 8.5)。一切都很好,花花公子。在生产服务器上,应用了 SSL,因此应用程序在 HTTPS 上运行。

现在,一个新的 Web 服务已添加到 Web 应用程序中,并被放置在所述 Web 应用程序的(子)文件夹中,就像其他已经运行的 Web 服务一样。通常我会使用 OAUTH(2) 或类似方法来保护 Web 服务。但是,使用 Web 服务的客户端由于其编程限制,已请求基本身份验证以确保安全。

我这辈子都想不通如何让它运行起来。我在服务器上创建了一个新用户帐户,在 IIS 中启用了基本身份验证,在 Web 服务所在的文件夹上使用“转换为应用程序”,当我访问 www.someurl.com/folder/to/some/webservice.asmx它确实要求我提供凭据。但是,由于 Web 应用程序被发布到此服务器,ASMX 文件是一个标记文件,将被视为非功能性标记文件并返回服务器错误 (The page must have a <%@ webservice class="MyNamespace.MyClass" ... %> directive.)

我做错了什么?

【问题讨论】:

  • 我想我会先检查应用程序池配置(包括它的 ASP.NET 版本)
  • 所有应用程序池都是(标准)具有集成管道模式的 .NET 4.0。为转换为应用程序的文件夹配置的应用程序池与运行“主”Web 应用程序的应用程序池相同。无论我创建单独的应用程序池还是使用 Classis 管道模式,都没有任何区别。

标签: c# asp.net web-services iis basic-authentication


【解决方案1】:

对于遇到相同问题的任何人:我在我的主 Web.Config 文件中使用 <location> 标记得到了我想要的东西,而忽略了在文件夹级别的 IIS 中的应用程序转换:

<location path="folder/to/some/webservice">
    <system.web>
        <authorization>
            <allow users="?"/>
        </authorization>
    </system.web>
</location>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    相关资源
    最近更新 更多