惊异,SESSION与域名的字符串有关系。

a_zhe_20 2006-01-06 02:22:57
问题概述:
我的网站每位会员拥有一个:http://会员名.domain.com/的地址(我的域名是泛解析,指向到一个IP,也是一个IIS站点里面。)
会员名允许数字、字母、下划线。
当会员输入自己的地址,程序会判断出其用户名,然后从数据库中取对应数据。当然这里面也有一些SESSION的存储和操作。

问题出来了:
如果会员名包括“_”下划线,那么这个SESSION在前一个页面创建并且赋予值之后(绝对不是空的),但是在下一个页面是无论如何也取不到的,为空值!
如果会员名不包括“_”下划线,那么一切正常!

小弟不才,冥思苦想了N小时才发现有这个区别。各位高手望给予帮助,高分重谢!

软件环境:windows2003server,IIS6.0,SQL SERVER2000。
...全文
274 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
alesso 2006-01-06
  • 打赏
  • 举报
回复
http://会员名.domain.com/

这种命名方式,会员名成为了域名的一部分
按照DNS的标准,域名是不允许有下划线的。


域名的第一部分可以是国际化域名,但不可以短划线开始或结束
域名中不允许使用下划线字符。
域名中不允许使用空格。
域名不区分大小写-您可混合大小写。
域名最终的字符串编码连同'.com'或'.net'后缀不得超过67个字符。
alesso 2006-01-06
  • 打赏
  • 举报
回复
URL允许有下划线,但域名是不允许有下划线的啊

楼主基础知识不咋样哦
mailxin 2006-01-06
  • 打赏
  • 举报
回复
应该与Session无关,与程序或者数据库有关吧,调试一下啊
guopeng_028 2006-01-06
  • 打赏
  • 举报
回复
你看一下是不是你的页面传值的什么地方会出现问题
跟踪调试一下看看
zhtflhs 2006-01-06
  • 打赏
  • 举报
回复
应该不是Session的问题,我的程序里面Session的值有的也带下划线,但没有出现你说的问题!
你在看看你的数据库吧!
Ivony 2006-01-06
  • 打赏
  • 举报
回复
Session是基于进程内Cookie的,而Cookie是基于域名的,即不同域名下的Cookie是不能通用的。
Eddie005 2006-01-06
  • 打赏
  • 举报
回复
Session本身是不受下划线干扰的...
lz干脆可以跟踪一下整个Session,看看里面到底有哪几个值
jc15271149 2006-01-06
  • 打赏
  • 举报
回复
ding
chunhuizhao 2006-01-06
  • 打赏
  • 举报
回复
session的成员名称是不允许有下滑线的
session(id) 这个id不能有下滑线
a_zhe_20 2006-01-06
  • 打赏
  • 举报
回复
我把我提出的问题简单化一下吧:
比如域名:
http://a_zhe_20.domain.com/
http://azhe20.domain.com/
都指向到一个站点。
站点中有文件:default.asp , default1.asp

default.asp的代码如下:
<%
session("memberid")="member"
response.redirect "default1.asp"
%>
default1.asp的代码如下:
<%response.write session("memberid")%>

打开第一个地址http://a_zhe_20.domain.com/:那么输出为空!
打开第二个地址http://azhe20.domain.com/:那么输出为“member”!

大家可以在自己的机器上试一下。
怎么解决这个问题呢?

感谢高手支招。
binny0532 2006-01-06
  • 打赏
  • 举报
回复
to:Ivony()
他是怎样干扰cookie的能不能给解释一下
Ivony 2006-01-06
  • 打赏
  • 举报
回复
与Session无关,是Coockie受到了干扰。
a_zhe_20 2006-01-06
  • 打赏
  • 举报
回复
另外IIS为什么把带有下划线的域名处理的方式不一样呢。
比如:http://a_zhe_20.domain.com/
依然能够被我的程序所处理输入,一切正常。就是SESSION不能够使用。
a_zhe_20 2006-01-06
  • 打赏
  • 举报
回复
to alesso(卡卡)
非常感谢您的回答。
我后来查询相关资料才注意到这一点。
现在我已经把网站的用户名注册规则更改了,不允许下划线。

但是我的带有“_”下划线的用户名(以及相应域名)依然可以解析,只是在程序里不能够使用SESSION了。
现在有没有办法把以前的这些用户名(包含下划线的)解决好呢?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧