2012-09-01 47 views
19

我有一個可用的.NET MVC應用程序,但在Windows 8上使用IE10訪問時,瀏覽器源代碼顯示所有動態生成的URL,例如。與Url.Action("Index", "Home")寫爲:IE10將令牌插入.NET MVC鏈接

/(F(usb6gVWyFnXevozQyFvVxVdbsN0uM9kZ5wNu9gT9pWBINGuodOdzLKkIQzfhqy3UhnCLyXf78LugXZO2UPYfMbNzSJJawmbqUBL56TjKpXgWpiMdVAjB1T3YcPlGhZePwFd6C9P_f_Y89KiDnWcA9EfR1m0ud3IcBYTW8OwZxOMTd8bxt5hM8mgXVN6OSdoo3IMwRA2))/ 首頁/索引

代替:

/首頁/指數

如果我們寫的靜態HTML鏈接:

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

IE10重定向到登錄頁面。 問題是,當臨時離開網站去到一個有第一個網站的鏈接的合作網站時。由於缺少注入的代碼,返回URL不再有效並重定向到登錄名。

任何人知道爲什麼這個代碼注入(Framework或IE10問題?)

回答

22

該代碼是ASP.NET's cookieless session功能的一部分。您可以在web.config​​部分disable it有:

<sessionState cookieless="false" /> 

或用:

<forms cookieless="UseCookies" /> 

我不知道爲什麼IE10是這樣做。您可以在app_browsers中添加一個瀏覽器文件並更新IE10信息,告訴它它支持cookies。或者你可能禁用了cookies?

+1

似乎你是錯誤地解釋IE10的服務器,因爲不是最新的瀏覽器定義文件。除了你的建議,我補充道:''和IE10不再注入會話令牌。 – Smorko

+0

是的,無cookie的形式是我過去使用過的形式,但無法想到我的頭頂。 – bkaid

8

.NET 2.0和.NET 4附帶的瀏覽器定義文件中存在一個錯誤,即它們包含一定範圍瀏覽器版本的定義。但某些瀏覽器(如IE 10)的版本不在這些範圍內。因此,ASP.NET將它們視爲未知瀏覽器,並默認爲低級定義,這有一定的不便之處,因爲它不支持JavaScript和/或cookies等功能。

Microsoft發佈了更正此問題的修補程序。

Source

+1

感謝Alexander,更新服務器上的瀏覽器定義可能是解決此問題的最佳方法,前提是您已啓用服務器更新。儘管現在,調整web.config爲我做了工作。 – Smorko

+0

如果您在Azure上設置新的Windows 2008 R2 vm,則需要應用Windows Update(以獲取這些修復程序)。今天失去了大約2小時尋找這個技巧。 – MikeJ

1

添加您的網頁。配置文件到cookieless="UseCookies"這樣;

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

本解決方案引用此鏈接; https://stackoverflow.com/a/15510453/2057154