现在越来越多的网站提供用户的二级域名访问,这对用户本身来说,是一个非常好的体验。能够采用个性化的域名,相信用户是会喜欢的。
由于二级域名系统的开发,牵涉到域名本身,那么如果在本机上开发二级域名系统,并且不通过Internet网访问,就成了一个问题。针对这一点,在这里讲述如何方便的做到这一点。
- 首先我们找到系统中的一个文件:/windows/system32/drivers/etc/hosts,用记事本加入一些和域名相关的IP指向。比如:127.0.0.1 smartyouth.net, 127.0.0.1 jasper.smartyouth.net, 127.0.0.1 admin.smartyouth.net。保存之后,我们访问如上网址,就会被定为到本机,就相当于你访问localhost一样。
- 在asp.net系统中,加入分析域名的代码,一般可以在default.aspx分析一下二级域名,用Server.Transfer转向到实际的页面。
- 在登陆代码中,处理登陆的Cookie,设置cookie的domain为.smartyouth.net。
- 在注销代码中,清除登陆的cookie.
第3、4步请参考关于二级域名Cookie的问题及解决方法
关于二级域名Cookie的问题及解决方法
今天博客园全面采用二级域名后,发现即使用户已经登录,但在访问二级域名Blog页面时都显示没有登录(表现为发表评论时要求输入验证码, 收藏功能无法正常使用),再次登录后,进入其他二级域名还是需要登录。在代码中,我是通过Request.IsAuthenticated来判断当前请求是否被验证的,以前全部采用www.cnblogs.com域名时很正常,看来是域名不同引起的。对于Form验证,验证是通过cookie进行的,在执行Request.IsAuthenticated时,会请求客户端相应的Cookie, Cookie名是在web.config中指定的,比如博客园web.config中的设置:
![](http://dudu.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://dudu.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://dudu.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://dudu.cnblogs.com/Images/OutliningIndicators/None.gif)
也就是说在执行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之后,加上这样的代码就解决问题了:
![](http://dudu.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://dudu.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://dudu.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://dudu.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](http://dudu.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://dudu.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://dudu.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
注:
1、如果你现在还会遇到访问二级域名要重新登录的情况,请删除你计算机中相应的cookie文件,路径在C:/Documents and Settings/用户名/Cookies与C:/Documents and Settings/用户名/Local Settings/Temporary Internet Files中,文件格式为:用户名@www.cnblogs.com, 然后重新登录。
2、如果你发现其他与二级域名相关的问题,请及时与我联系。
3、如果你在访问博客园时,出现“Runtime Error”错误,那是因为刚刚更新了dll文件,你再过1、2分钟重新打开IE访问就行了。
4、现在已经全面启用二级域名。