asp.net 4.0的程序,發布后,測試在ie6,ie7,ie8,ie9下均可以正常登錄,但是在ie10,ie11下就是無法保存cookie,排查了一下是否ie10,ie11是否存在設置問題發下並不是。
從別人的解決方案中找到了兩種解決方案:
1,)第一種解決方案,在web.confgi authentication/forms屬性中添加 cookieless="UseCookies"
如果你在程序中使用Form驗證並使用cookie保存用戶的登錄狀態,請切記:在
<authentication mode="Forms">
.......
<forms cookieless="UseCookies" ... />
</authentication>中要加上cookieless="UseCookies"。如果不這樣設置的話,cookieless會使用默認值UseDeviceProfile。用了UseDeviceProfile,悲劇就發生了,ASP.NET會根據Request.Browser.Cookies來判斷當前瀏覽器是否支持Cookie(如若不信,請用Reflector查看System.Web.Security.FormsAuthentication的代碼)。而Request.Browser.Cookies會認為上面的三種情況不支持cookie(可能還有更多誤判的情況)。
2,)第二種解決方案,
在網站的根目錄,新增一個瀏覽器定義文件,步驟如下:
1、添加一個"App_Browsers"文件夾 ;
2、添加一個"*.browser"后綴的文件,如 IE10.browser;
3、在文件中添加如下內容(下面的配置表示,對所有的設備和瀏覽器,都支持Cookies):
1 <browsers> 2 <browser refID="Default"> 3 <capabilities><!-- To avoid wrong detections of e.g. IE10 --> 4 <capability name="cookies" value="true" /> 5 <capability name="ecmascriptversion" value="3.0" /> 6 </capabilities> 7 </browser> 8 </browsers>
參考文章:
http://www.cnblogs.com/maoniu602/p/3799958.html
http://www.cnblogs.com/dudu/archive/2011/03/06/asp_net_4_browser_cookie.html