我尝试的任何东西都不起作用。 Currenly我有以下代码来改变asp.net会话cookie的到期日期和路径,但asp不想听我说。我有时会在Set-Cookie标题中发送相同的cookie两次,有时它会发送默认的cookie忽略路径和到期日期,有时它会按预期发送所有内容,有时它根本不会发送Set-Cookie。我该怎么办。这让我疯狂:(
我在Global.asax中的代码
protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e)
{
/// only apply session cookie persistence to requests requiring session information
if (Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState)
{
var sessionState = ConfigurationManager.GetSection("system.web/sessionState") as SessionStateSection;
var cookieName = sessionState != null && !string.IsNullOrEmpty(sessionState.CookieName)
? sessionState.CookieName
: "ASP.NET_SessionId";
var timeout = sessionState != null
? sessionState.Timeout
: TimeSpan.FromMinutes(20);
/// Ensure ASP.NET Session Cookies are accessible throughout the subdomains.
if (Request.Cookies[cookieName] != null && Session != null && Session.SessionID != null)
{
Response.Cookies[cookieName].Value = Session.SessionID;
Response.Cookies[cookieName].Path = Request.ApplicationPath;
Response.Cookies[cookieName].Expires = DateTime.Now.Add(timeout);
}
}
}
答案 0 :(得分:2)
也许如果您尝试使用系统调用,而不是直接更改Cookie ..
HttpContext.Current.Session.Timeout = 20;
您的评论之后,以及您对我说的是,您尝试使用相同的Cookie,针对2个不同的应用程序,并设置不同的超时。但是asp.net只能为每个cookie保留一个会话。要解决这个问题,您必须使用2个不同的命名cookie,而不是不同的cookie路径。
在每个应用程序目录的web.config上,更改
<sessionState cookieName="AppSessionCookieName" ..>
参考更多信息
https://msdn.microsoft.com/en-us/library/h6bb9cz9(v=vs.100)
希望这能解决问题。