我有一个 WebAPI 应用程序,它希望使用表单身份验证,或者我自己的自定义基本或摘要身份验证。它在大多数服务器上都能正常工作。但是在一些服务器上它不起作用。
我发现当身份验证失败时,是因为 IIS 已经对 App Pool 用户进行了身份验证。Thread.CurrentPrincipal.Identity.AuthenticationType = "协商"。AFAIK 这是 Windows 身份验证。但是,相关站点的 Windows 身份验证已被禁用,我什至卸载了服务器上的 Windows 身份验证功能,但仍然遇到了同样的问题。
我发现将 runAllManagedModulesForAllRequests 设置为 true 可以解决这个问题,尽管它不是一个理想的解决方法,因为它会增加所有请求的开销,即使是那些通过静态处理程序运行的请求。
如果有人能告诉我为什么会发生这种情况,或者如何在 IIS 上调试身份验证过程,那将非常有帮助。
编辑: IIS7/7.5 Integrated Pipeline 如果它有所作为