在两个asp.net web应用程序之间共享相同的SessionId
本文关键字:共享 之间 应用程序 SessionId web net asp 两个 | 更新日期: 2023-09-27 17:51:22
我在两个web应用程序之间使用sql server会话模式。会话id在ASPState数据库中创建。我需要从第一个应用程序到第二个应用程序共享会话id,而不使用querystring和cookie。我按照这个链接的步骤操作。下面是代码。
(web.config)
<add name="DBConnection" connectionString="Data Source=localhost;DataBase=ASPState;Integrated Security=True;uid=sa;pwd=password-1" providerName="System.Data.SqlClient"/>
<sessionState mode="SQLServer" sqlConnectionString="DBConnection" allowCustomSqlDatabase="true" regenerateExpiredSessionId="false" cookieless="false" timeout="1" ></sessionState>
<machineKey validationKey="566A547C407CB0C47ABAEC581B8B90C45E15039806352E4611B35E0FB70C1C096350A4BBAE816191331DCA55874D3F96B41FFDED4C6A913591684A90825F53A0" decryptionKey="B299127DFC22648C2EF92D7EDF2E4960277F562C60F3BDE4A4C3BFDFEA602FDF" validation="SHA1" decryption="AES" />
<modules runAllManagedModulesForAllRequests="true">
<add name="BasicAuthenticationModule" type="UserAuthenticator" />
</modules>
在第一个应用Home.aspx.cs
protected void imgBTN_Click(object sender, EventArgs e)
{
string sessionKey = HttpContext.Current.Session.SessionID;
//How to transfer the same session id to the second application
Response.Redirect("http://localhost:43392/PartnerHome.aspx"");
}
我从ASPState数据库中获得会话密钥。但是如何从相同的会话id传递到第二个应用程序呢?
您可以使用SessionManager将ID设置为目标站点中您想要的任何内容。你只需要通过querystring GET或form POST从一个传递到另一个:
来源Response.Redirect("http://localhost:43392/PartnerHome.aspx?SessID="
+ Session.SessionID);
目标string sessionId = Request.QueryString["SessId"];
bool redirected = false;
bool isAdded = false;
new System.Web.SessionState.SessionIDManager().SaveSessionID(
HttpContext.Current, sessionId, out redirected, out isAdded);
参见MSDN上的SessionIDManager