【发布时间】:2011-09-27 14:17:33
【问题描述】:
我有一个使用 ASP.NET MVC 3.0 构建的应用程序。它使用 asp.net 的内置表单身份验证,没有会话状态,以及浏览器上的 cookie 来识别发出请求的用户。
现在,当我使用 IE9 测试应用程序时,典型的 HTML 请求会在标头中发送此用户代理,一切正常。
用户代理:Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;WOW64;Trident/5.0)
但是,我们在应用程序中有一个页面,其中包含一个 ActiveX 容器,该容器在浏览器中托管 Microsoft Word。此 ActiveX 容器的目的是允许您对 word 文档进行修改,单击按钮将该 word 文档与您的更改一起发布到我们的服务器,以便保存。
在 ActiveX 控件(www.ocxt.com 中的 Office 查看器组件)中有一个名为 HttpPost() 的方法,它将查看的文档的内容发布到服务器。
当您调用 HttpPost() 时,它会正确发送所有相同的 cookie,但使用不同的 User-Agent 字符串。
用户代理:Mozilla/4.0(兼容;MSIE 5.5;Windows NT 4.0)
使用 MSIE 5.5 字符串的 UserAgent 似乎会导致 ASP.NET 或 MVC 不将请求发送到适当的控制器,而是将重定向响应发送到登录页面,即使 cookie 对于会话是正确的。我用 Fiddler 进行了测试,并尝试使用 MSIE 6.0、7.0、8.0,这些似乎都可以正常工作,所以具体来说,5.5 会导致部分服务器堆栈重定向到登录页面。
这个页面以前可以正常工作,所以我不确定最近版本的 ASP.NET/MVC 是否发生了变化,或者是因为我已经升级到 IE9.0,但基本上,我会想知道是否可以告诉 ASP.NET 在确定会话是否已经过身份验证时不考虑用户代理。
谢谢。
【问题讨论】:
标签: asp.net asp.net-mvc activex