手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >二级域名Cookie问题的解决方法
二级域名Cookie问题的解决方法
摘要:在代码中,我是通过Request.IsAuthenticated来判断当前请求是否被验证的,以前全部采用www.cnblogs.com域名时...

在代码中,我是通过Request.IsAuthenticated来判断当前请求是否被验证的,以前全部采用www.cnblogs.com域名时很正常,看来是域名不同引起的。对于Form验证,验证是通过cookie进行的,在执行Request.IsAuthenticated时,会请求客户端相应的Cookie, Cookie名是在web.config中指定的,比如博客园web.config中的设置:

复制代码 代码如下:

<authentication mode="Forms">

<forms name=".DottextCookie" loginUrl="login.aspx" protection="All" timeout="480" path="/" />

</authentication>

也就是说在执行Request.IsAuthenticated时,会执行类似这样的代码,HttpCookie cookie = Request.Cookies[".DottextCookie"];我们知道Cookie是与域名关联的,HttpCookie就有个Domain属性。博客园所遇到的问题就是二级域名不能访问主域名的cookie,登录时,博客园的程序通过FormsAuthentication.SetAuthCookie设置Cookie, 而登录代码是在www.cnblogs.com域名下执行的,cookie的域名被默认设置为www.cnblogs.com, 而我们在二级域名下就无法访问这个cookie,如何解决这个问题呢?cookie的domain是否可以设置成对所有二级域名有效?在Google中苦苦寻觅,终于找到了一篇文章(Tips On Using SubDomain), 原来可以将cookie关联的域设置为".domain.ext", 博客园的设置就是.cnblogs.com。 这样,我在FormsAuthentication.SetAuthCookie之后,加上这样的代码就解决问题了:

C#

复制代码 代码如下:

HttpCookie cookie = Request.Cookies[".DottextCookie"];

if(cookie!=null)

{

cookie.Domain = ".cnblogs.com";

Response.Cookies.Add(cookie);

}

注:

1、如果你现在还会遇到访问二级域名要重新登录的情况,请删除你计算机中相应的cookie文件,路径在C:Documents and Settings用户名Cookies与C:Documents and Settings用户名Local SettingsTemporary Internet Files中,文件格式为:用户名@www.cnblogs.com, 然后重新登录。

2、如果你发现其他与二级域名相关的问题,请及时与我联系。

3、如果你在访问博客园时,出现“Runtime Error”错误,那是因为刚刚更新了dll文件,你再过1、2分钟重新打开IE访问就行了。

4、现在已经全面启用二级域名。

【二级域名Cookie问题的解决方法】相关文章:

asp.net清空Cookie的两种方法

iframe跨域与session失效问题的解决办法

Asp.net清空cache禁用页面缓存的方法

ASP.NET 多次提交的解决办法2

asp.net下出现其中的组件“访问被拒绝”的解决方法

.net 添加Cookie的4种方法

ASP.NET 中文显示之两种解决方法

读取TXT文件内容的方法

安装 VS2005 SP1 有关问题的解决办法

asp.net querystring乱码解决方法

精品推荐
分类导航