ASP.NET实现多域名多网站共享Session值的方法
ASP.NET实现多域名多网站共享Session值的方法
发布时间:2016-12-29 来源:查字典编辑
摘要:ASP.NET实现多域名多网站共享Session值1、实现功能:可设置哪些站点可以共享Session值,这样就防止别人利用这个去访问要想实现...

ASP.NET实现多域名多网站共享Session值

1、实现功能:可设置哪些站点可以共享Session值,这样就防止别人利用这个去访问

要想实现这个功能就必须得把Session值 放入数据库中, 所有我们先在VS命令工具下注册一个

命名如下:aspnet_regsql.exe -S [数据库服务地址] -E -ssadd 具体格式请参考 /?

添加成功后我们休要对ASP.NET生成的存储过程进行简单的修改,

打开ASP.net为我们创建的数据库“ASPState” 找到存储过程“TempGetAppID”

然后修改存储过程如下:

复制代码 代码如下:

USE [ASPState]

GO

/****** Object: StoredProcedure [dbo].[TempGetAppID] Script Date: 11/21/2011 16:15:27 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER OFF

GO

ALTER PROCEDURE [dbo].[TempGetAppID]

@appName tAppName,

@appId int OUTPUT

AS

SET @appName = LOWER(@appName)

SET @appId = NULL

set @appId=640732509 --这个是我自己测试时写死的 你可以通过系统数据库tempdb中的ASPStateTempApplications查询到站点appId 记住只有当网站的Seeion配置是数据库中 而且保存过一次Session值才能查询的到

/*

--SELECT @appId = AppId

--FROM [tempdb].dbo.ASPStateTempApplications

--WHERE AppName = @appName

以上注释办法为原来ASP.net 自动生成的

*/

IF @appId IS NULL BEGIN

BEGIN TRAN

SELECT @appId = AppId

FROM [tempdb].dbo.ASPStateTempApplications WITH (TABLOCKX)

WHERE AppName = @appName

IF @appId IS NULL

BEGIN

EXEC GetHashCode @appName, @appId OUTPUT

INSERT [tempdb].dbo.ASPStateTempApplications

VALUES

(@appId, @appName)

IF @@ERROR = 2627

BEGIN

DECLARE @dupApp tAppName

SELECT @dupApp = RTRIM(AppName)

FROM [tempdb].dbo.ASPStateTempApplications

WHERE AppId = @appId

RAISERROR('SQL session state fatal error: hash-code collision between applications ''%s'' and ''%s''. Please rename the 1st application to resolve the problem.',

18, 1, @appName, @dupApp)

END

END

COMMIT

END

RETURN 0

这个就可以共享了,但我们还得解决一个问题就是替换客户端的SeeionID ,我们可以添加一个处理程序来利用SessionIDManager类来进行处理,

实例我就不写了,我值写个替换的方法

复制代码 代码如下:

SessionIDManager sessionid = new SessionIDManager();

bool a;

bool b;

sessionid.SaveSessionID(this.Context, "这里是SeeionID", out a, out b);

最后修改配置文件

在System.Web节点下添加 <sessionState mode="SQLServer" sqlConnectionString="data source=数据连接;user id=sa; password=123456;" ></sessionState>

ok 一切搞定 你去试试把

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新asp.net教程学习
热门asp.net教程学习
编程开发子分类