Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在托管在同一服务器上的两个网站中共享同一会话?_C#_Asp.net_Session - Fatal编程技术网

C# 如何在托管在同一服务器上的两个网站中共享同一会话?

C# 如何在托管在同一服务器上的两个网站中共享同一会话?,c#,asp.net,session,C#,Asp.net,Session,我有两个web应用程序托管在服务器上,使用IIS上创建的虚拟目录 比如:123.12.23.124/site123.12.23.124/site2 现在,我需要访问在site2的site1中创建的会话。这就是我到目前为止所做的: 更改两个站点的web.config文件以将stateserver会话用作 sessionState mode=“StateServer”cookieless=“false”timeout=“720”stateConnectionString=“tcpip=127.0.0

我有两个web应用程序托管在服务器上,使用IIS上创建的虚拟目录

比如:123.12.23.124/site123.12.23.124/site2

现在,我需要访问在site2的site1中创建的会话。这就是我到目前为止所做的:

  • 更改两个站点的web.config文件以将stateserver会话用作
  • sessionState mode=“StateServer”cookieless=“false”timeout=“720”stateConnectionString=“tcpip=127.0.0.1:424”

  • 我进入服务并在服务器上启动了asp.net状态服务
  • 我已将会话设置为site1:

    session["user"] = "xxxx";
    
    并通过以下方式访问site2:

    if(session["user"] != null)
    {
    }
    else
    {
       //Always coming here
    }
    

    您在web.config中将会话服务器设置错误

    sessionState mode=“StateServer”cookieless=“false”timeout=“720”stateConnectionString=“tcpip=127.0.0.1:42424”

    它不应该是127.0.0.1。查找并填充状态服务器的真实ip。

    这是双向的 1-使用在中折扣的共享会话 2-使用机器钥匙 如果您对身份验证等问题有疑问,这是非常有用的 因为当您登录一个站点时,您登录了同一服务器上的其他站点

    对于手动生成的键值,设置应类似于以下示例

    <machineKey  
    validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
                   AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"           
    decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
    validation="SHA1"
    decryption="AES"
    />
    
    
    
    IIS中的虚拟目录是否在同一应用程序域下运行?可能重复:您必须使用共享会话此链接可以使用完整的[shared session][1][1]:您不能使用默认会话实现,也不能使用黑客攻击。有许多相关的问题(即建议的一个问题,或重复的一个问题)。请查看相关帖子,更新您的问题,了解哪些方法不适合您。(或者,如果你找到一个你喜欢的,可以关闭为重复)这应该是注释,它也与“如何绕过默认会话状态实现对不同站点之间不共享状态的限制”问题无关。它只是web.config中的配置。我认为不需要额外的“旁路”。