Хорошо, так что я наконец-то ответил на свой вопрос.Сначала я расскажу о втором, о запуске сайта в режиме отладки:
Visual Studio отлаживает на сайте http://localhost:[someport]. Так что, если установлен код для создания файла cookie с использованием cookie.domain для mydomain.comcookie не установлен, потому что браузер знает, что вы находитесь на локальном хосте вместо указанного домена.Чтобы исправить это, я поместил запись в свой файл hosts, чтобы mydomain.com указывал на 127.0.0.1.Затем я запустил сайт в режиме отладки.Когда сайт стал локальным, я изменил URL-адрес в браузере на http://subdomain.domain.com:[someport] и обновил его.Теперь можно установить cookie.
Это помогло мне отследить мой код, чтобы найти проблему двух файлов cookie, создаваемых веб-сайтом моего субдомена.Я обнаружил, что cookie mydomain.com создавался нормально (метод CreateCookie ниже) из-за cookie.domain.Тем не менее, когда я пытался обновить срок действия файла cookie (UpdateCookie ниже), он снова вернулся к мысли, что должен использовать 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;
}