ASP.NET实现多域名多网站共享Session值
	1、实现功能:可设置哪些站点可以共享Session值,这样就防止别人利用这个去访问
	  要想实现这个功能就必须得把Session值 放入数据库中, 所有我们先在VS命令工具下注册一个 
	 命名如下:aspnet_regsql.exe -S [数据库服务地址] -E -ssadd  具体格式请参考 /?
	添加成功后我们休要对ASP.NET生成的存储过程进行简单的修改,
	    打开ASP.net为我们创建的数据库“ASPState” 找到存储过程“TempGetAppID”
	    然后修改存储过程如下: www.2cto.com
	  
	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.',
	                        &
	
相关新闻>>
- 发表评论
- 
				
- 最新评论 进入详细评论页>>



