我有两个 Web 服务,都是旧式的 asmx。两者都位于同一个子文件夹中,具有匿名身份验证,位于具有 Windows 身份验证的 MVC Web 应用程序中。
当我浏览其中一个时,我得到了预期的结果,我可以调用服务,但是当我浏览另一个时,我收到“HTTP 错误 401.2 - 未授权,由于身份验证标头无效,您无权查看此页面。”。
然后我重命名第二个文件,一切正常。即使我删除了第二个 asmx 文件,我得到的还是未授权信息,而不是“未找到资源”。
我已在注册表和文件系统中搜索对文件名的引用,但一无所获。我删除了 ASP.NET 临时文件,但这没有帮助。
有任何解决问题的建议吗?
答案1
这不容易找到,但在 inetpub\temp\appPools\ 中有一个名为应用程序池的文件夹。该文件夹中有部分 IIS 配置的“副本”。
在某些时候,当我们更改身份验证时,我们一定不小心标记了实际的 asmx 文件,而不是文件夹。因此它只包含一个针对文件的特殊配置部分。例如:
<location path="Web/Services/ServiceName.asmx">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</location>
当我们删除该部分后,它又可以正常工作了:)
答案2
经过大量工作,我发现了同样的事情......我认为这里的共同主题是所讨论的文件夹被称为“服务”
<location path="Default Web Site/MyDirectory/Services">
应用程序池配置文件中有一个虚假条目,其中<anonymousAuthentication enabled="false" />
我的解决方案是设置anonymousAuthentication = "True"
我想知道这是否是 IIS 中的一个小错误,由于某种原因这部分配置被忽略了。