首页 新闻 会员 周边

Cookie的跨端口能配置吗?

0
悬赏园豆:30 [已解决问题] 解决于 2013-08-15 12:01

有一个solution, 里面有两个asp.net web project, 在VS里启动调试,两个网站都运行起来了,占用的是不同的localhost端口,但是为什么A网站的Theme的更改会影响另一个也切换到相同的Theme呢?按理说这算是两个独立的网站,根本就不存在那个Theme所以挂掉了。

之前以为是Session问题,现在发现是Cookie问题导致,因为Cookie是不区分端口号的,所以部署在一个asp.net服务器上的两个站点,如果Cookie名相同,会自动覆盖,并且读取是相同的数据,这个有办法解决吗?

 

能不能为Cookie设置端口号呢?

空明流光的主页 空明流光 | 初学一级 | 园豆:106
提问于:2013-08-15 10:54
< >
分享
最佳答案
0

cookie 是根据域名和Name 来区分的,你可以为两个网站设置不同的 Name,在web.config 中:

<authentication mode="Forms">

<forms name = ".xxxxxxx"  />

收获园豆:25
Launcher | 高人七级 |园豆:45045 | 2013-08-15 11:17

高人七级啊,经测试,不行。据我理解,这里forms标签的name属性是只是为asp.net用户身份验证票据所设置的cookie存储名称,和自己写的cookie没有半毛钱的关系。

空明流光 | 园豆:106 (初学一级) | 2013-08-15 11:30

@沧海一杰: 你自己写的 Cookie 是咋写的?

这样吗:HttpCookie acookie = new
HttpCookie("last");
acookie.Value="a";
acookie..Expires=DateTime.MaxValue;

Response.Cookies.Add(acookie);

这里也是可以设置名称的。

Launcher | 园豆:45045 (高人七级) | 2013-08-15 11:35

@Launcher: 是啊,但这里写在一个基类里的,两个网站继承自一个基类,怎么改都很麻烦

空明流光 | 园豆:106 (初学一级) | 2013-08-15 11:41
void BasePage_PreInit(object sender, EventArgs e)
        {
            var theme = ConfigHelper.DefaultTheme;
            if (!string.IsNullOrEmpty(this.SelectedTheme))
            {
                theme = this.SelectedTheme;
            }
            this.Theme = theme;
        }

public string SelectedTheme
        {
            set
            {
                HttpCookie cookie = new HttpCookie(CookieConstant.SelectedTheme);
                cookie.Value = value;
                Response.SetCookie(cookie);

                HttpCookie a;
                System.Net.Cookie b;
            }
            get
            {
                var cookie = Request.Cookies[CookieConstant.SelectedTheme];
                if (cookie == null || cookie.Value == null)
                    return null;
                else
                    return cookie.Value;
            }
        }

 

@沧海一杰: 

空明流光 | 园豆:106 (初学一级) | 2013-08-15 11:43

@沧海一杰: HttpCookie(CookieConstant.SelectedTheme); 在这里,把名称改成:

HttpCookie(CookieConstant.SelectedTheme + PortNumber);

Launcher | 园豆:45045 (高人七级) | 2013-08-15 11:46

@Launcher: 咦,这好像是个好办法哦,试试

空明流光 | 园豆:106 (初学一级) | 2013-08-15 11:49

@沧海一杰: 高人七级不愧为高人。办法很简单,为什么我就没想到呢? 摇头,摇头,再摇头。

空明流光 | 园豆:106 (初学一级) | 2013-08-15 12:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册