IE10将令牌注入.NET MVC链接

时间:2012-09-01 14:47:18

标签: asp.net-mvc internet-explorer-10

我有一个有效的.NET MVC应用程序,但是当在Windows 8上使用IE10访问时,浏览器源代码显示所有动态生成的URL,例如。 Url.Action("Index", "Home")写成:

  

/(F(usb6gVWyFnXevozQyFvVxVdbsN0uM9kZ5wNu9gT9pWBINGuodOdzLKkIQzfhqy3UhnCLyXf78LugXZO2UPYfMbNzSJJawmbqUBL56TjKpXgWpiMdVAjB1T3YcPlGhZePwFd6C9P_f_Y89KiDnWcA9EfR1m0ud3IcBYTW8OwZxOMTd8bxt5hM8mgXVN6OSdoo3IMwRA2))/ 主/索引

而不是:

  

/主页/索引

如果我们使用静态HTML编写链接:

<a href="/Home/Index">[linktext]</a>

IE10重定向到登录页面。 问题是暂时离开站点以转到具有返回第一个站点的链接的合作伙伴站点。由于注入的代码丢失,返回URL不再有效,并重定向到登录。

任何人都知道为什么要注入此代码(Framework或IE10问题?)

3 个答案:

答案 0 :(得分:22)

该代码是ASP.NET's cookieless session功能的一部分。您可以在web.config <configuration><system.web>部分中disable it使用:

<sessionState cookieless="false" />

或者用:

<forms cookieless="UseCookies" />

我不知道为什么IE10会这样做。您可以在app_browsers中添加一个浏览器文件,其中包含更新的IE10信息,告诉它它支持cookie。或者你可能禁用了cookie?

答案 1 :(得分:8)

.NET 2.0和.NET 4附带的浏览器定义文件中存在一个错误,即它们包含某些浏览器版本的定义。但某些浏览器(如IE 10)的版本不再在这些范围内。因此,ASP.NET将它们视为未知浏览器,默认为低级定义,这有一些不便之处,例如它不支持JavaScript和/或cookie等功能。

Microsoft发布了修正此问题的修补程序。

Source

答案 2 :(得分:1)

将您的web.config文件添加到此cookieless="UseCookies";

<authentication mode="Forms">
  <forms loginUrl="~/YourLoginUrl" timeout="2880" **cookieless="UseCookies"** />
</authentication>

此解决方案引用此链接; https://stackoverflow.com/a/15510453/2057154