.net 需要在加载会话之前更改会话ID

.net 需要在加载会话之前更改会话ID,.net,asp.net,session,.net,Asp.net,Session,我正在尝试使用内置的.NET会话处理跨多个ASP.NET应用程序共享会话。我无法使用自定义会话实现 我有多个web服务器,每个服务器都有自己的主机名,配置为指向同一个代码库 我使用的是一个HttpModule,它可以手动设置应用程序名,因此,只要对不同服务器的请求具有相同的会话ID,它们就会使用相同的会话数据 现在,我需要能够在第一次加载会话之前设置会话ID——我可以设置它以在第一次加载时更改cookie和重定向,但我更喜欢不使用重定向 ETA:我们已经在使用MS会话状态服务器来处理池中服务

我正在尝试使用内置的.NET会话处理跨多个ASP.NET应用程序共享会话。我无法使用自定义会话实现

  • 我有多个web服务器,每个服务器都有自己的主机名,配置为指向同一个代码库
  • 我使用的是一个HttpModule,它可以手动设置应用程序名,因此,只要对不同服务器的请求具有相同的会话ID,它们就会使用相同的会话数据
现在,我需要能够在第一次加载会话之前设置会话ID——我可以设置它以在第一次加载时更改cookie和重定向,但我更喜欢不使用重定向


ETA:我们已经在使用MS会话状态服务器来处理池中服务器之间的会话共享。这个问题特别是关于跨应用程序共享会话的问题,也就是说,应用程序需要共享相同的会话数据。

< P>也许你应该考虑一种不同的方法。将需要共享的任何数据存储在所有ASP.NET应用程序都可以访问的数据库中

会话不应在不同的应用程序之间共享。

Microsoft表示它适用于ASP.NET会话,允许从存储位置共享会话状态并在服务器场中共享

对服务器场的支持 配置。搬到一个 进程外模型,ASP.NET也 解决了服务器场问题。这个 新的进程外模型允许所有 服务器场中要共享会话的服务器 状态进程。您可以实现这一点 通过更改ASP.NET配置 指向公共服务器

Windows状态服务器会话存储 您可以使用
StateServer
设置

还有其他选择。

为什么不能使用自定义会话实现?这是一个更大项目的一部分,我没有能力(访问/权限/资金等)更改会话的实现方式。除了能够在所有页面事件触发之前设置会话ID之外,共享会话模型的其他所有功能都正常工作。谢谢-我在问题中添加了更多信息以澄清问题。我们已经在使用状态服务器来处理会话,但我需要能够在多个ASP.NET应用程序之间共享对这些会话的访问。
<configuration>
  <system.web>
    <sessionState mode="StateServer"
      stateConnectionString="tcpip=SampleStateServer:42424"
      cookieless="false"
      timeout="20"/>
  </system.web>
</configuration>
<configuration>
  <system.web>
    <sessionState mode="SQLServer"
      sqlConnectionString="Integrated Security=SSPI;data 
        source=SampleSqlServer;" />
  </system.web>
</configuration>