http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 12571|回复: 7
打印 上一主题 下一主题

[Asp.Net] asp.net4.0检查浏览器Cookie状态之Bug,网站登录之后自动退出解决方案

[复制链接]
跳转到指定楼层
楼主
发表于 2013-7-30 17:11:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
asp.net4.0检查浏览器Cookie状态之Bug,网站登录之后自动退出解决方案

  问题是这样的,在有些浏览器和,有些用户的电脑上,输入用户名和密码登录之后是正常的,但是只要一操作页面就自动退出。
但是大部分用户是正常的,这个问题让我郁闷了很久。
经过测试发现是Net的Form验证的Bug
在有些环境下在检查浏览器是否支持Cookie是为检查错误,就是本来浏览器支持Cookie检查成了不支持。
我做了个测试如下
添加一个测试页面
protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("测试是否支持Cookie:" + Request.Browser.Cookies);
    }
只有一个输出语句。
检查浏览器是否支持Cookie。
在我的电脑上测试如下

说明是支持Cookie的,
但是放到服务器上让用户访问就成了如下

我靠。这问题很犀利啊,
而且用户电脑上所有的浏览器都是这样的。
一时间无法下手了。
这个问题是在.net4.0之后出现的,以前没有出现过
因为今天把服务器上的2.0修改成了4.0
而且经过我的测试ASP.NET 3.5及ASP.NET 2.0
是为True,只有4.0为False
这下有了方向也就好解决了,
看看Form验证的配置吧
[code=html]    <authentication mode="Forms">
      <forms name=".sufienet" protection="All" timeout="240" defaultUrl="~/Index.aspx" loginUrl="~/Login.aspx"/>
    </authentication>[/code]
经过我排查原来是cookieless属性的问题
这个属性有如下值
[code=html]                                    <xs:attribute name="cookieless" use="optional">
                                        <xs:simpleType>
                                            <xs:restriction base="xs:NMTOKEN">
                                                <xs:enumeration value="AutoDetect" />
                                                <xs:enumeration value="UseCookies" />
                                                <xs:enumeration value="UseDeviceProfile" />
                                                <xs:enumeration value="UseUri" />
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:attribute>[/code]
默认的是UseDeviceProfile
也就是说从文件检查
其实很简单,直接修改成第三项UseCookies就行了。
如下所示
[code=html]    <authentication mode="Forms">
      <forms name=".sufienet" protection="All" cookieless=“UseCookies”  timeout="240" defaultUrl="~/Index.aspx" loginUrl="~/Login.aspx"/>
    </authentication>[/code]
问题解决了。
或许大家也可能出现这样的情况那么安我上面的思路基本上可以解决。
大家给提提建议啊

本帖被以下淘专辑推荐:

  • · cookie|主题: 12, 订阅: 1


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
沙发
发表于 2013-7-30 17:14:49 | 只看该作者
   受教了,学习中……
板凳
发表于 2013-7-30 17:16:05 | 只看该作者
Cookie在浏览器存储上限是 4096字节,有什么办法可以扩展存储大小
地板
发表于 2013-7-30 17:16:52 | 只看该作者
Cookie在浏览器存储上限是 4096字节,有什么方法可以改变吗
5
 楼主| 发表于 2013-7-30 17:23:58 | 只看该作者
你,还有我。 发表于 2013-7-30 17:16
Cookie在浏览器存储上限是 4096字节,有什么方法可以改变吗

这是浏览器限制的,没办法修改,就算有办法你总不能修改每个用户的浏览器吧,Cookie本身就一个存储状态信息的,不能当成数据库使用啊4KB够大了吧,你要知道他是往返于服务器于客户端的, 这么大的东西什么时候才能发完啊,难道打开一个网页要比下载一个电视居还要久吗?这样的网站要他干什么。
浏览器应该只让存储20个,每个大小也有限制,你不如说说要干什么。具体点的问题
6
发表于 2013-7-31 09:28:03 | 只看该作者
不错..学学学
7
发表于 2013-7-31 09:32:39 | 只看该作者
站长苏飞 发表于 2013-7-30 17:23
这是浏览器限制的,没办法修改,就算有办法你总不能修改每个用户的浏览器吧,Cookie本身就一个存储状态信 ...

言之有理, Cookie只适合存储一些小数据
8
发表于 2018-12-30 22:38:00 | 只看该作者
我只是路过打酱油的。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 04:56

© 2014-2021

快速回复 返回顶部 返回列表