好吧,所以我終於回答了我自己的問題。我將首先解決第二個問題,關於在調試模式下運行網站:
Visual Studio將調試到站點http:// localhost:[someport]。因此,如果代碼設置爲使用cookie.domain爲mydomain.com創建cookie,則Cookie不會設置,因爲瀏覽器知道您位於localhost而不是指定的域。爲了彌補這一點,我把一個條目放在我的hosts文件中,以便mydomain.com指向127.0.0.1。然後我以調試模式啓動了該站點。當網站作爲本地主機發布時,我將browswer中的URL更改爲http://subdomain.domain.com:[someport]並刷新。現在可以設置cookie。
這樣做幫助我追蹤我的代碼,找到由我的子域網站創建的兩個Cookie的問題。我發現,由於cookie.domain,mydomain.com cookie正在創建好(下面的CreateCookie方法)。但是,當我試圖更新cookie的過期時(UpdateCookie在下面),它恢復到認爲它應該使用子域cookie並繼續並在沒有找到時創建它。我只需要在設置cookie和更新過期之前再次設置cookie.domain。現在我只有一個cookie。
public void CreateCookie()
{
HttpCookie cookie = new HttpCookie(mConfig.webCookie);
TimeSpan span = new TimeSpan(0, 0, 30, 0);
DateTime time = DateTime.Now; ;
cookie["Username"] = mEncrypt.Encrypt(mUser.Username);
cookie.Domain = "mydomian.com";
cookie.Expires = time + span;
HttpContext.Current.Response.Cookies.Add(cookie);
}
public void UpdateCookie()
{
TimeSpan span = new TimeSpan(0, 0, 30, 0);
DateTime time = DateTime.Now;
HttpCookie cookie = HttpContext.Current.Request.Cookies[mConfig.webCookie];
// without specifying the domain the cookie will be set with the subdomain
cookie.Domain = "mydomain.com";
HttpContext.Current.Response.Cookies.Set(cookie);
HttpContext.Current.Response.Cookies[mConfig.webCookie].Expires = time + span;
}
向我們展示一些實際的代碼可能會幫助我們更輕鬆地診斷問題。 – LukeH 2012-02-15 22:54:00
確實如此,但我不確定哪些代碼可能是負責任的,儘管也許創建這兩個cookie是某種默認行爲。請參閱下面的解決方案 – BeachBum 2012-02-16 15:14:56