如何在同一个文件夹中调用一个 Web 服务而不调用另一个 Web 服务?

如何在同一个文件夹中调用一个 Web 服务而不调用另一个 Web 服务?

我有两个 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 中的一个小错误,由于某种原因这部分配置被忽略了。

相关内容