2012-04-27 156 views
0

我有两个ASP .NET接口:重定向没有查询字符串

1. app1.domain.com 
    2. app2.domain.com 

在两者的默认页面,有一个链接按钮,从中我们可以在它们之间进行切换。以前我们使用查询字符串来传递用户名和密码。但是现在我们想要使用cookies。 所以在链接按钮的单击事件,我有这样的代码:现在

HttpCookie cookie = new HttpCookie("MYCookie", Guid.NewGuid().ToString()); 
    cookie.Domain = "domain.com"; 
    cookie.Expires = DateTime.UtcNow.AddHours(1); 
    cookie.HttpOnly = false; 
    cookie.Secure = true; 

    cookie.Values.Add("Username", Username.ToString()); 
    cookie.Values.Add("UserId", UserId.ToString()); 
    Response.Cookies.Add(cookie); 
    Response.Redirect(destinationAddress); 

,在其他应用程序的默认页面正在读的cookie为:

protected override void InitializeCulture() { 
    if (Request.Cookies["MYCookie"] != null) { 
     HttpCookie cookie = null; 
     cookie = Request.Cookies.Get("MYCookie"); 
     } 
     } 

但在这里,我找到Request.Cookies时[ “MYCookie”]为空。我错过了什么?请指教。

+0

可能重复HTTP ://stackoverflow.com/questions/7589630/sharing-asp-net-cookies-across-sub-domains) – 2012-04-27 08:00:26

+0

您可以使用HTTP meta标签刷新。请参阅我的回答 – 2012-05-03 12:39:55

回答

0

它看起来对我来说,问题是你的域名。

变化cookie.Domain = "domain";cookie.Domain = ".domain.com";

+0

我在web.config文件自定义它为domain.com ...但 – 2012-04-27 08:04:17

+0

您需要前导点'.'你有它因此未帮助吗? – 2012-04-27 08:05:43

+0

我像你说的那样加点了点但是没有帮助.. – 2012-04-27 08:55:25

0

我认为你需要添加的HttpCookie相同的路径属性都APP1和APP2

+0

你的意思是这样吗? cookie.Path =“/default.aspx”; – 2012-04-27 09:09:21

+0

我尝试添加路径属性..但它没有帮助我。 – 2012-04-27 10:02:12

+0

@Sanjay我能想到的最后一件事是机器的关键。你可以阅读这篇文章http://stackoverflow.com/questions/4312020/single-sign-on-in-asp-net-cookie-name-machinekey-and-what-more – Zayar 2012-04-27 10:08:48

0

的Response.Redirect产生ThreadAbortException。 您在Cookie中所做的所有更改都将丢失。所以你可以使用,

<meta http-equiv="Refresh" content="10; URL=your url" /> 

C#代码:

System.Web.UI.HtmlControls.HtmlMeta meta = new System.Web.UI.HtmlControls.HtmlMeta(); 
meta.HttpEquiv = "Refresh"; 
meta.Content = "10; URL=your url"; 
Page.Header.Controls.Add(meta); 

并设置cookie里像

cookie.Domain = ".domain.com"; 
[跨子域共享ASP.NET饼干(的
相关问题