跨应用程序共享session Sharing Session Across Applications

本文介绍了一种通过自定义HTTP模块实现跨应用共享会话的方法。通过修改web.config文件并创建SharedSessionModule类,可以为多个应用程序设置统一的会话标识,从而实现会话状态的共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FROM:http://www.codeproject.com/KB/session/sharedsession.aspx
核心代码:

web.config

<httpModules>
  <add name="SharedSessionModule" type="SharedSessionModule,   SharedSessionModule"/>
</httpModules>


<appSettings>
<add key="ApplicationName" value="SharedWeb"/>
</appSettings>

 

SharedSessionModule.cs
/// <summary>
/// SharedSessionModule class.
/// </summary>
public class SharedSessionModule : IHttpModule
{
#region IHttpModule Members
/// <summary>
/// Initializes a module and prepares it to handle requests.
/// </summary>
/// <param name="context">An <see cref="T:System.Web.HttpApplication"/>
/// that provides access to the methods,
/// properties, and events common to all application objects within an ASP.NET
/// application</param>
public void Init(HttpApplication context)
{
try
{
// Get the app name from config file...
string appName = ConfigurationManager.AppSettings["ApplicationName"];
if (!string.IsNullOrEmpty(appName))
{
FieldInfo runtimeInfo = typeof(HttpRuntime).GetField("_theRuntime",
BindingFlags.Static | BindingFlags.NonPublic);
HttpRuntime theRuntime = (HttpRuntime)runtimeInfo.GetValue(null);
FieldInfo appNameInfo = typeof(HttpRuntime).GetField("_appDomainAppId",
BindingFlags.Instance | BindingFlags.NonPublic);
appNameInfo.SetValue(theRuntime, appName);
}
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}
/// <summary>
/// Disposes of the resources (other than memory) used by the module that
/// implements <see cref="T:System.Web.IHttpModule"/>.
  /// </summary>
public void Dispose()
{
}
#endregion
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值