ASP.NET實現多網域名稱多網站共用Session值

來源:互聯網
上載者:User

在此打個廣告:金色海洋的自然架構開源社區QQ群:82598514 ,希望大家多多支援

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  一切搞定 你去試試把

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.