C# 从MVC3升级到5,现在应用程序#AuthenticateRequest不再接收验证';d请求

C# 从MVC3升级到5,现在应用程序#AuthenticateRequest不再接收验证';d请求,c#,asp.net-mvc,C#,Asp.net Mvc,我已经将一个包含.asmx文件的旧项目从MVC 3升级到MVC 5,现在Global.asax中的应用程序_AuthenticateRequest处理程序不再看到所有请求。它看到客户机的初始请求,我的代码返回401,其中包含所需的基本身份验证,但是当客户机使用设置的身份验证头进行响应时,Application_AuthenticateRequest永远不会收到第二个请求。我用Fiddler验证了这一点 此外,一些东西——可能是MVC框架——在初始响应中添加了一个自己的基本身份验证,realm='

我已经将一个包含.asmx文件的旧项目从MVC 3升级到MVC 5,现在Global.asax中的应用程序_AuthenticateRequest处理程序不再看到所有请求。它看到客户机的初始请求,我的代码返回401,其中包含所需的基本身份验证,但是当客户机使用设置的身份验证头进行响应时,Application_AuthenticateRequest永远不会收到第二个请求。我用Fiddler验证了这一点

此外,一些东西——可能是MVC框架——在初始响应中添加了一个自己的基本身份验证,realm='localhost',因此我的应用程序的初始响应有两个基本身份验证头

如何让应用程序\u AuthenticateRequest处理程序再次看到它用来处理的所有请求

编辑添加:我在一个全新的MVC5项目上得到了相同的行为。但问题只发生在本地IIS上;该代码在IIS EXPRESS上运行良好

我还尝试了在新服务器上安装我的代码,它的IIS设置是正常的。同样的问题


。。。应用程序_BeginRequest两次都被调用,因此第二个请求确实会发送到应用程序。因此,我假设MVC5添加了一个新功能“帮助”?

对于所有请求,我认为您应该使用
应用程序\u PostAuthenticateRequest
而不是
应用程序\u AuthenticateRequest

IIS中是否禁用了基本身份验证和启用了匿名身份验证?IIS可能会阻止您的请求。如果要执行自定义基本身份验证,则需要禁用IIS的基本身份验证。我想这就是它在IIS express中工作的原因。这两个isapi模块的配置在IIS express中是不同的/不存在的–Chris Marisic

您使用的是
[Authorize]
操作筛选器直接在控制器上或作为全局筛选器?不。只有一个控制器,基本上用于心跳/调试。web.config中的
部分是否将
runAllManagedModulesForAllRequests
设置为true?它设置为true。在IIS中是否禁用了基本身份验证和匿名身份验证?IIS可能会阻止您的请求。如果要执行自定义基本身份验证,则需要禁用IIS的基本身份验证。我想这就是它在IIS express中工作的原因。这两个isapi模块的配置在IIS express中是不同的/不存在的。如果它一开始就无法进行身份验证,那么它如何能够进行后身份验证?