Если ваше приложение работает в корне домена, Request.ApplicationPath == "/"
. Следовательно, с вашим кодом путь вашего куки будет //
. Вы можете обойти эту проблему, выполнив следующее:
cookie.Path = Request.ApplicationPath;
if (cookie.Path.Length > 1) cookie.Path += '/';
Поскольку будет правильно указывать , вы захотите убедиться, что ваше приложение обеспечивает согласованный регистр URL-адресов (т.е. перенаправляет все запросы с URL-адресами, содержащими заглавные буквы, в их строчные эквиваленты).
Кроме этого, я полагаю, у вас все должно быть в порядке. Если вы хотите, чтобы все ваши файлы cookie имели «область приложения», рассмотрите возможность создания пользовательского IHttpModule
с таким кодом (или расширением global.asax.cs
):
private void Application_EndRequest(object sender, EventArgs e)
{
var app = (HttpApplication)sender;
var cookiePath = app.Request.ApplicationPath;
if (cookiePath.Length > 1) cookiePath += '/';
foreach (string name in app.Response.Cookies.AllKeys)
{
var cookie = app.Response.Cookies[name];
cookie.Path = cookiePath;
}
}