我已经将包含.asmx文件的旧项目从MVC 3升级到MVC 5,现在Global.asax中的Application_AuthenticateRequest处理程序不再能够看到所有请求。它看到了客户端的初始请求,我的代码返回401所需的BASIC auth,但是当客户端使用Auth标头集响应时,Application_AuthenticateRequest永远不会获得第二个请求。我用Fiddler验证了这一点。
此外,某些东西 - 可能是MVC框架 - 正在初始响应中添加一个自己的BASIC auth和realm ='localhost',所以我的应用程序的初始响应有两次BASIC auth头。
如何让Application_AuthenticateRequest处理程序再次看到它以前的所有请求?
编辑添加:我在一个全新的MVC5项目中得到了同样的行为。但问题只发生在本地IIS上;代码在IIS EXPRESS上运行正常。
我还在新安装的服务器上尝试了我的代码,其IIS设置正常。同样的问题。
... Application_BeginRequest 是两次都被调用,所以第二个请求会进入应用程序。所以我假设MVC5添加了一个“帮助”的新功能?
答案 0 :(得分:1)
您是否已禁用基本身份验证并在IIS中启用匿名身份验证? IIS可能会阻止您的请求。如果要进行自定义基本身份验证,则需要为IIS禁用基本身份验证。我会猜到它为什么在IIS中工作表示这两个isapi模块的配置在IIS-express中是不同的/不存在的 - Chris Marisic
答案 1 :(得分:0)
对于所有请求,我认为您要使用Application_PostAuthenticateRequest
代替Application_AuthenticateRequest