2个asp.net web应用程序之间共享相同的SessionID(Share same Sessi

2019-08-06 07:15发布

我用了两个Web应用程序之间的SQL Server会话模式。 会话ID是在ASPState的数据库中创建。 我需要分享从第一应用到第二会话ID不使用查询字符串和饼干。 我跟着这个步骤链接 。 下面是代码。
在这两个应用程序(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传递给第二个应用程序?

Answer 1:

您可以使用SessionManager的ID设置为要在目标网站什么的。 你只需要通过查询字符串GET从一个到另一个传递或形成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);

见SessionIDManager MSDN上



文章来源: Share same SessionId between two asp.net web applications