4

我有一个 MVC 站点在 apache2 undo ubuntu 上的 mono 2.10.8.1 上运行。如果一切正常,我有一项服务可以检查凭据并设置 cookie。在 Windows 中我没有问题,只有一个 cookie .ASPXAUTH:。但是,当我部署到 linux 服务器时,它会设置两个 cookieASP.NET_SessionId.MONOAUTH.

我的问题是为什么它是 linux 中的两个 cookie 和 windows 中的一个,我怎样才能摆脱ASP.NET_SessionIdcookie?

我正在设置这样的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;
    }
4

1 回答 1

1

我认为 Mono 没有任何问题。实际上,您提到的两个 cookieASP.NET_SessionId.MONOAUTH会话表单授权cookie,它们确实不同。
要摆脱ASP.NET_SessionId,您可以根本不使用 Sessions 或拥有无 cookie 会话(MSDN 上的 <sessionSate>)。

注意:您还应该在 Windows 上获得两个 cookie。如果不是,则可能意味着您没有点击任何在 SessionState 中设置某些值的 MVC 操作。如果您设法找到这样的操作,您也会在 Windows 上获得两个 cookie。

于 2012-11-15T15:09:51.447 回答