Asp.net中SqlServer模式Session的多網站共用工作階段狀態

來源:互聯網
上載者:User

先記錄下過程:

1。修改設定檔

<system.web>
<!-- 讓其在跨網站訪問時,使SESSION能共用 -->
<httpCookies domain="CSDN.Net" />
<!-- 設定Session模式為SQLServer -->
<sessionState mode="SQLServer" sqlConnectionString="Data Source=127.0.0.1;User ID=ASPState;Password=ASPState;" timeout="60" />
</system.web>
2。修改 ASPState的TempGetAppID預存程序,讓不同的網站保持同一個AppId。

因為實在找不到可以自訂AppName的方法,只有出此下策了。

/**//*

擷取AppId

修改過程,使其只產生一個AppId

*/
CREATE PROCEDURE dbo.TempGetAppID
@appName tAppName,
@appId int OUTPUT
AS

SET @appName = LOWER(@appName)
SET @appId = NULL

--查詢AppName對應的AppId
--次處進行了修改,使每個AppId都是一樣.
SELECT top 1 @appId = AppId
FROM [tempdb].dbo.ASPStateTempApplications
--WHERE AppName = @appName

--如果沒有查詢到AppId
IF @appId IS NULL
BEGIN
BEGIN TRAN
--鎖定模式查詢
SELECT @appId = AppId
--SELECT top 1 @appId = AppId
FROM [tempdb].dbo.ASPStateTempApplications WITH (TABLOCKX)
WHERE AppName = @appName

--如果沒有查詢到AppId
IF @appId IS NULL
BEGIN
--擷取AppName的HashCode
EXEC GetHashCode @appName, @appId OUTPUT

--插入新AppId
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
GO

 

網上有很多方式,但都不是我的環境所需要的

1。修改網站的IIS中繼資料
IIS網站有不同的Id(/LM/W3SVC/1009009583/Root,ID是1009009583,一般通常是1),此方法適合多伺服器間的網站叢集(同一台伺服器上把網站ID修改為相同為出現網站錯亂)。
有關解決伺服器之間應用程式路徑不同的問題的步驟資訊,請參見位於 http://support.microsoft.com/default.aspx?ln=zh-cn 上的 Microsoft 知識庫中的文章 325056“PRB: Session State Is Lost in Web Farm If You Use SqlServer or StateServer Session Mode”(PRB:如果使用 SqlServer 或 StateServer 會話模式則會在網路場中丟失工作階段狀態)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.