我正在尝试使用内置的.NET会话处理来跨多个ASP.NET应用程序共享会话。我无法使用自定义会话实现。
现在我需要能够在第一次加载会话之前设置会话ID - 我可以将其设置为更改cookie并在第一次加载时重定向,但我真的更愿意在没有重定向。
ETA:我们已经在使用MS会话状态服务器来处理池中服务器之间的会话共享。此问题专门针对跨应用程序共享会话 - 即http://www.example.com和http://shopping.example.com处的应用程序需要能够共享相同的会话数据。
答案 0 :(得分:1)
Microsoft称其为moved to an out-of-process model用于ASP.NET会话,允许支持从存储位置共享会话状态并在服务器场中共享它。
支持服务器场 配置。通过移动到 进程外模型,ASP.NET也 解决服务器场问题。该 新的进程外模型允许所有 服务器场中的服务器共享会话 国家进程。你可以实现这个 通过更改ASP.NET配置 指向一个公共服务器。
您可以使用StateServer
设置...
<configuration>
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=SampleStateServer:42424"
cookieless="false"
timeout="20"/>
</system.web>
</configuration>
StateServer模式,用于存储会话 状态在一个叫做的单独过程中 ASP.NET状态服务。这确保了 如果是,则会保留该会话状态 Web应用程序也重新启动 使会话状态可用 Web场中的多个Web服务器
如果您有支持SQL Server数据库,则可以选择SQLServer
模式
SQLServer模式存储会话状态 一个SQL Server数据库。使用此模式 确保会话状态 如果是Web应用程序,则保留 重新启动并进行会话状态 可用于a中的多个Web服务器 网络农场。
<configuration>
<system.web>
<sessionState mode="SQLServer"
sqlConnectionString="Integrated Security=SSPI;data
source=SampleSqlServer;" />
</system.web>
</configuration>
还有其他选择。 This MSDN article contains pointers about how to further set up such choices... 强>
答案 1 :(得分:0)
也许您应该考虑采用不同的方法。存储您需要在所有ASP.NET应用程序都可以访问的数据库中共享的任何数据。
不应在不同的应用程序之间共享会话。