使用URLRewriter后,Cookie不能正常显示的问题

时间:2022-09-29 13:04:59
web.config配置如下

<RewriterRule>
<LookFor>http://([A-Za-z0-9]{5,15})\.ccc\.com/</LookFor>
<SendTo>~/default.aspx?uid=$1</SendTo>
</RewriterRule>

<authentication mode="Forms">
            <forms domain="ccc.com" path="/" protection="All" loginUrl="~/Account/Loginbuzz.aspx" timeout="2880" name=".fdgAUTH"/>
</authentication>


我做的是二级哉名重写,即把类似http://sadfsdf.ccc.com重写成http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf,
访问http://sadfsdf.ccc.com时已成功映射为地址http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf

现在遇到的问题是我登录后,访问http://sadfsdf.ccc.com时不能显示用户名(用User.Identity.Name),而直接访问http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf却能显示用户名(用User.Identity.Name)

我的问题出在哪?

11 个解决方案

#1


检查Web.Config

#2


楼上的,到哪里都能遇到你!

#3


顶上去,怎么解决??给点思路。web.config检查哪里??<forms domain="ccc.com" 这里已给全域了啊。。

#4


顶上去,大家帮我看看。。急啊。

#5


你说错了吧
是把http://sadfsdf.ccc.com时已成功映射为地址http:// www.ccc.com/default.aspx?uid=sadfsdf
而不是映射成
http:// sadfsdf.ccc.com/default.aspx?uid=sadfsdf

因为原来的cookie的domain属性某认是www.ccc.com的
你现在弄成sadfsdf.ccc.com了,与www.ccc.com属不同域名了
所以你应该把cookie的domain属性赋值为ccc.com

#6


回复5楼,是我说错了。我确实是把http://sadfsdf.ccc.com成功映射为地址http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf

当我访问http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf时能通过User.Identity.Name取得用户名。
但是当我访问:http://sadfsdf.ccc.com/用User.Identity.Name得不到用户名,我在使用Request.Url.ToString()时输出确实为http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf,也就是说,映射已成功了!

24小时过去了,这一步解决不了,没法继续了,头痛。。求帮助。!!


#7


晕。我不能编辑自己的帖子!

回复5楼, 我没有说错。我确实是把http://sadfsdf.ccc.com成功映射为地址http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf

当我访问http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf时能通过User.Identity.Name取得用户名。
但是当我访问:http://sadfsdf.ccc.com/用User.Identity.Name得不到用户名,我在使用Request.Url.ToString()时输出确实为http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf,也就是说,映射已成功了!

24小时过去了,这一步解决不了,没法继续了,头痛。。求帮助。!!

#8


如果你的URLrewriter内部是使用RewritePath()方法
那么cookie将被抛弃.

#9


谢谢newdigitime的回复,我参考的是
http://www.cnblogs.com/jzywh/archive/2005/09/29/246650.html

也不知道他哪里写错了?

#10


还是改回用别的方法解决了,但是心不甘啊。。。项目完后在回来研究。

#11


引用 8 楼 newdigitime 的回复:
如果你的URLrewriter内部是使用RewritePath()方法
那么cookie将被抛弃.


如果不能用RewritePath()方法,那应改用什么方法?

#1


检查Web.Config

#2


楼上的,到哪里都能遇到你!

#3


顶上去,怎么解决??给点思路。web.config检查哪里??<forms domain="ccc.com" 这里已给全域了啊。。

#4


顶上去,大家帮我看看。。急啊。

#5


你说错了吧
是把http://sadfsdf.ccc.com时已成功映射为地址http:// www.ccc.com/default.aspx?uid=sadfsdf
而不是映射成
http:// sadfsdf.ccc.com/default.aspx?uid=sadfsdf

因为原来的cookie的domain属性某认是www.ccc.com的
你现在弄成sadfsdf.ccc.com了,与www.ccc.com属不同域名了
所以你应该把cookie的domain属性赋值为ccc.com

#6


回复5楼,是我说错了。我确实是把http://sadfsdf.ccc.com成功映射为地址http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf

当我访问http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf时能通过User.Identity.Name取得用户名。
但是当我访问:http://sadfsdf.ccc.com/用User.Identity.Name得不到用户名,我在使用Request.Url.ToString()时输出确实为http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf,也就是说,映射已成功了!

24小时过去了,这一步解决不了,没法继续了,头痛。。求帮助。!!


#7


晕。我不能编辑自己的帖子!

回复5楼, 我没有说错。我确实是把http://sadfsdf.ccc.com成功映射为地址http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf

当我访问http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf时能通过User.Identity.Name取得用户名。
但是当我访问:http://sadfsdf.ccc.com/用User.Identity.Name得不到用户名,我在使用Request.Url.ToString()时输出确实为http://sadfsdf.ccc.com/default.aspx?uid=sadfsdf,也就是说,映射已成功了!

24小时过去了,这一步解决不了,没法继续了,头痛。。求帮助。!!

#8


如果你的URLrewriter内部是使用RewritePath()方法
那么cookie将被抛弃.

#9


谢谢newdigitime的回复,我参考的是
http://www.cnblogs.com/jzywh/archive/2005/09/29/246650.html

也不知道他哪里写错了?

#10


还是改回用别的方法解决了,但是心不甘啊。。。项目完后在回来研究。

#11


引用 8 楼 newdigitime 的回复:
如果你的URLrewriter内部是使用RewritePath()方法
那么cookie将被抛弃.


如果不能用RewritePath()方法,那应改用什么方法?