本文主要是介绍ASP.NET Session串联问题解决方案,解决同一个浏览器登陆多个账号串联的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一步在登录页面
public ActionResult login(string url)
{
if (Session["UserId"] != null && Session["UserId"].ToString() != "")//这个根据自己的开发项目编写,这个是判断seesion用户是否存在
return Redirect("index");
else
{
if (Request.Cookies["__LOGINCOOKIE__"] == null || Request.Cookies["__LOGINCOOKIE__"].Value == "")
{
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "Test", DateTime.Now, DateTime.Now.AddSeconds(5), false, "");
string encryptedText = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(new HttpCookie("__LOGINCOOKIE__", encryptedText));
return Redirect("login");
}
else
{
Response.Cookies.Add(new HttpCookie("__LOGINCOOKIE__", ""));
}
}
ViewBag.url = url;
return View();
}
第二步配置web.config
<sessionState mode="StateServer" cookieless="UseUri" regenerateExpiredSessionId="true" stateNetworkTimeout="120" timeout="120"></sessionState>
只要两步设置好,同一个浏览器登陆两个账号,两个账号不会串联。
sessionState参数说明:
属性 | 说明 | ||||||||||||
allowCustomSqlDatabase | 可选的 Boolean 属性。 指定会话状态 SQL 数据库是否可以是自定义数据库(而不是 ASP.NET 默认数据库)。如果为 false,则不能指定初始目录或数据库作为 sqlConnectionString 属性的值。默认会话状态 SQL 数据库为 ASPState 数据库。有关更多信息,请参见会话状态模式。 此属性是 .NET Framework 2.0 版中的新属性。 默认值为 false。 | ||||||||||||
cookieless | 可选的 HttpCookieMode 属性。 指定对于 Web 应用程序使用 Cookie 的方式。 cookieless 属性可以为下列可能值之一。默认值为 UseCookies。
| ||||||||||||
cookieName | 可选的 String 属性。 指定存储会话标识符的 Cookie 的名称。 此属性是 .NET Framework 2.0 版中的新属性。 默认值为 "ASP.NET_SessionId"。 | ||||||||||||
customProvider | 可选的 String 属性。 指定用于存储和检索会话状态数据的自定义会话状态提供程序的名称。该提供程序在 providers 元素中指定。仅当会话状态模式设置为 Custom 值时,才使用该提供程序。有关更多信息,请参见会话状态模式。 此属性是 .NET Framework 2.0 版中的新属性。 默认值为空字符串 ("")。 | ||||||||||||
mode | 可选的 SessionStateMode 属性。 指定存储会话状态值的位置。有关更多信息,请参见会话状态模式。 mode 属性可以为下列可能值之一。默认值为 InProc。
| ||||||||||||
partitionResolverType | 可选的 String 属性。 指定在哪里存储会话状态。如果 partitionResolverType 属性中指定了值,则忽略 sqlConnectionString 和 stateConnectionString 属性。PartitionResolverType 属性返回的连接字符串将用于每个请求,为请求的其余部分连接到适当的服务器位置。如果连接字符串无效,ASP.NET 将引发一个异常,该异常与当配置的服务器连接字符串无效时引发的异常相同。该属性用于在 SQL 或状态服务器模式下在多个后端节点上划分会话状态数据。 此属性是 .NET Framework 2.0 版中的新属性。 默认值为空字符串。 | ||||||||||||
regenerateExpiredSessionId | 可选的 Boolean 属性。 指定当客户端指定了过期的会话 ID 时是否重新发出会话 ID。默认情况下,当启用了 regenerateExpiredSessionId 时,仅为 cookieless 模式重新发出会话 ID。有关更多信息,请参见 IsCookieless。 此属性是 .NET Framework 2.0 版中的新属性。 默认值为 true。 | ||||||||||||
sqlCommandTimeout | 可选的 TimeSpan 属性。 指定使用 SQL Server 会话状态模式的 SQL 命令的持续时间超时(秒)。持续时间超时是 SQL 命令可以处于空闲状态的时间(秒),超过此时间之后,该命令将被取消。 此属性是 .NET Framework 2.0 版中的新属性。 默认值为 0:00:30(30 秒)。 | ||||||||||||
sqlConnectionString | 可选的 String 属性。 为运行 SQL Server 的计算机指定连接字符串。该属性在 mode 属性设置为 SQLServer 值时是必需的。有关更多信息,请参见会话状态模式。
默认值为 "data source=127.0.0.1;Integrated Security=SSPI"。 | ||||||||||||
stateConnectionString | 可选的 String 属性。 指定远程存储会话状态的服务器名称或地址以及端口。端口值必须为 42424。当 mode 为 StateServer 值时,该属性是必需的。确保运行 ASP.NET 状态服务的服务器是存储会话状态信息的远程服务器。该服务随 ASP.NET 一起安装,默认情况下为 %SystemRoot%\Microsoft.NET\Framework\VersionNumber\aspnet_state.exe。有关更多信息,请参见会话状态模式。
默认值为 "tcpip=127.0.0.1:42424"。 | ||||||||||||
stateNetworkTimeout | 可选的 TimeSpan 属性。 指定 Web 服务器与状态服务器之间的 TCP/IP 网络连接可以处于空闲状态的时间(秒),超过此时间后,请求将被取消。该属性在 mode 属性设置为 StateServer 值时使用。 默认值为 10 秒。 | ||||||||||||
timeout | 可选的 TimeSpan 属性。 指定在放弃一个会话前该会话可以处于空闲状态的分钟数。对于进程内和状态服务器模式,timeout 属性不能设置为大于 525,601 分钟(1 年)的值。 会话 timeout 配置设置仅适用于 ASP.NET 页。更改会话 timeout 值不会影响 ASP 页的会话超时时间。同样,更改 ASP 页的会话超时时间不会影响 ASP.NET 页的会话超时时间。 默认值为 20 分钟。 | ||||||||||||
useHostingIdentity | 可选的 Boolean 属性。 指定会话状态将恢复为宿主标识还是使用客户端模拟。 如果为 true,ASP.NET 将使用下列进程凭据之一来连接会话状态存储区: 宿主进程;对于 Microsoft Internet 信息服务 [IIS] 5 和 5.1 版为 ASPNET,对于 Microsoft Windows Server 2003 则为 NETWORK SERVICE。 应用程序模拟标识,当使用了以下配置时使用此凭据: <identity impersonate="true" userName="user" password="pwd" /> 如果为 false,ASP.NET 将使用目前与当前请求的操作系统线程关联的凭据来连接会话状态存储区。对于客户端模拟,ASP.NET 将使用与浏览器协商的安全凭据来连接会话状态存储区。如果为 false,ASP.NET 在连接会话状态存储区时不会恢复为进程标识或应用程序模拟标识。有关更多信息,请参见 ASP.NET 模拟。 此属性是 .NET Framework 2.0 版中的新属性。 默认值为 true。
| ||||||||||||
继承的属性 | 可选的属性。 由所有节元素继承的属性。 |
这篇关于ASP.NET Session串联问题解决方案,解决同一个浏览器登陆多个账号串联的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!