gpt4 book ai didi

asp.net - 在 asp.net 中设置 session cookie 的路径和过期时间

转载 作者:搜寻专家 更新时间:2023-10-31 08:49:27 27 4
gpt4 key购买 nike

我尝试过的任何方法都不起作用。 Currenly 我有以下代码来更改 asp.net session cookie 过期日期和路径,但 asp 不想听我的。有时我在 Set-Cookie header 中发送相同的 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);
}
}
}

最佳答案

也许如果你尝试使用系统调用,而不是直接更改 cookies..

HttpContext.Current.Session.Timeout = 20;

更新

在您的评论之后,从您对我说的话来看,您尝试为 2 个不同的应用程序使用相同的 cookie,并设置不同的超时时间。但是 asp.net 只能为每个 cookie 保留一个 session 。要解决这个问题,您必须使用 2 个不同的命名 cookie,而不是不同的 cookie 路径。

在每个应用程序目录的 web.config 上,更改

<sessionState cookieName="AppSessionCookieName" ..>

更多信息引用
https://msdn.microsoft.com/en-us/library/h6bb9cz9(v=vs.100)

希望这能解决问题。

关于asp.net - 在 asp.net 中设置 session cookie 的路径和过期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2513742/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com