我在apache2 undo ubuntu上运行单声道2.10.8.1上的MVC站点。我有一项服务,检查凭据和设置cookie,如果一切都好。在Windows中我没有问题,只有一个cookie:.ASPXAUTH
。但是,当我部署到Linux服务器时,它设置了两个cookie ASP.NET_SessionId
和.MONOAUTH
。
我的问题是为什么它是linux中的两个cookie和一个windows中的一个,我怎样才能摆脱ASP.NET_SessionId
cookie?
我正在设置这样的cookie:
Response.AppendCookie(BuildAuthenticationCookie(login, data));
public static HttpCookie BuildAuthenticationCookie(string login, string ticketData)
{
var authTicket = new FormsAuthenticationTicket(2, login, DateTime.Now,
DateTime.Now.AddMinutes(500), false, ticketData);
var authCookie = new HttpCookie( FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(authTicket))
{
HttpOnly = true,
Secure = SiteSettings.CookiesSslOnly,
Expires = DateTime.Now.AddMinutes(SiteSettings.AuthCookieExpirationTime)
};
return authCookie;
}
答案 0 :(得分:1)
我认为Mono没有任何问题。事实上,您提到的两个Cookie - ASP.NET_SessionId
和.MONOAUTH
是会话和表单授权 Cookie,它们实际上是不同的。
要摆脱ASP.NET_SessionId
,您可以根本不使用会话或使用无Cookie会话(<sessionSate> on MSDN)。
注意:您还应该在Windows上获得两个Cookie。如果没有,这可能意味着您没有点击任何在SessionState中设置某个值的MVC操作。如果您设法找到这样的动作,您也将在Windows上获得两个cookie。