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