我有一个WebAPI应用程序,希望使用Forms认证或我自己的自定义Basic或摘要式身份验证。它在大多数服务器上工作正常。但是在几台服务器上它不起作用。IIS使用AuthenticationType = Negotiate对应用池用户进行意外身份验证
我发现当身份验证失败时,它是因为IIS已经对App Pool用户进行了身份验证。 Thread.CurrentPrincipal.Identity.AuthenticationType =“协商”。 AFAIK这是Windows身份验证。但是,对于有问题的站点,Windows身份验证已被禁用,我甚至在卸载服务器上的Windows身份验证功能时仍然遇到同样的问题。
我发现将runAllManagedModulesForAllRequests设置为true将解决此问题,但它不是一种令人满意的解决方法,因为它会为所有请求(即使是通过静态处理程序运行的那些请求)增加开销。
如果有人能告诉我为什么会发生这种情况,或者如何在IIS上调试身份验证过程,这将非常有帮助。
编辑: IIS7/7.5综合管线,如果它的确与众不同
很好的建议,但似乎并没有为我所面临的问题。 – ScottS