再次发帖,为自己解决的问题,分享一下经验
游北亮
领域专家: 后端开发技术领域 2009-12-08 01:27:36 之前有发帖:
http://topic.csdn.net/u/20091117/16/ca952706-0f66-4155-a3c2-bc432ec091c4.html
追踪了一下午的问题:提交页面后报错:此程序无法显示网页
今天又碰上了另外一个Ajax的问题:
参考:
http://topic.csdn.net/u/20091208/11/8b4d6e3d-fae2-4377-a7e9-e0804ee550ea.html
一直头疼,为什么会报错,偏偏程序还能正常执行完成,就是返回时出错了
今天突然想起自己不是装了HttpWatch嘛,为什么不用它抓包看看呢?
于是运行起来,发现出错的网页,返回的Stream里,有一堆的
Set-Cookie: .ASPXAUTH=0E10F73ACE5A01AACD19E1CBDB8B70B866401B01532DF7E8C35D37E0A19D201E4A65C492483FDF7B69464A7E6EB0C31A46D6D61F1CCCD407C27648455D49AC9342F759932A3ABEC343DF7CA182B12AE3; path=/; HttpOnly
并且一直持续到结束,怀疑就是这个问题,查询了一下,
是System.Web.Security.FormsAuthentication.SetAuthCookie方法设置的这个Cookie,用于保持身份验证
再检查代码,有个方法是取当前登录用户名的,在方法的最后把取得的用户名设置到Cookie里(调用System.Web.Security.FormsAuthentication.SetAuthCookie方法)
而我更新数据库的方法正好调用了上面这个取用户名的方法,来设置数据库里的更新人信息
于是,插入10000条记录,就调用了10000次这个方法,也就生成了10000个.ASPXAUTH的Cookie
当然就造成返回的Header太长了,最终显示失败。
问题找到了,解决方案自然就不用说了。
不过小小的疑问一下,System.Web.Security.FormsAuthentication.SetAuthCookie方法为什么不是先看看有没有设置过Cookie,而是直接添加一条新的Cookie?