我有一个在 apache2 undo ubuntu 上的 mono 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;
}
最佳答案
我认为Mono没有什么问题。事实上,您提到的两个 cookie - ASP.NET_SessionId
和 .MONOAUTH
是 Session 和 Forms Authorization cookie ,这确实是不同的。
要摆脱 ASP.NET_SessionId
,您可以根本不使用 session 或使用无 cookie session ( <sessionSate> on MSDN )。
注意:您还应该在 Windows 上获得两个 cookie。如果没有,则可能意味着您没有执行任何在 SessionState 中设置某些值的 MVC 操作。如果您设法找到这样的操作,您也会在 Windows 上获得两个 cookie。
关于asp.net-mvc - Linux 上的 mono 返回不同的 cookie 集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13391435/