2012-03-07 83 views
0

我在WinServer2k8機器上有一個ASP.NET網站,它通過Forms身份驗證進行了驗證。此時,如果有一個人在機器A上登錄,則機器B上的所有登錄嘗試都將失敗(A & B正在使用相同的互聯網連接訪問服務器)。登錄請求不會返回任何錯誤,而是隻是重定向回登錄屏幕,就好像認證從未發生過一樣。我想知道如何通過IIS7或web.config文件配置此站點,以便它允許任意數量的同時用戶會話。網站的所有設置均設置爲IIS7默認值。我試過在IIS7中更改會話狀態模式,最大會話屬性和表單身份驗證設置。將IIS配置爲允許多個用戶同時訪問

任何幫助表示讚賞。

P.S. - 我也測試過使用不同IP地址進行互聯網連接的機器,我仍然無法從這一端開始同步會話。

P.P.S - 如果我試圖從服務器機器上的網絡瀏覽器開始一個會話,每次都會工作,不管是誰登錄。思考?

編輯 - 我使用Windows會話憑據進行身份驗證 - 使用的網頁後端是LogonUser的方法,這是從ADVAPI32.DLL

+0

你有任何可以做到這一點的自定義驗證碼嗎? – Jacob 2012-03-07 00:54:38

+0

噢,我忘了提及我使用Windows會話憑據進行身份驗證 - 網頁後端使用的方法是LogonUser,它是從advapi32.dll導入的 – Maximilian 2012-03-07 14:44:02

回答

0

我發現我的問題的根源,而事實證明,有什麼不對我用窗體身份驗證的方式。

錯誤原因是驗證請求的超時值對任何計算機來說都太低,除非承載網站的服務器超出。我將web.config文件中的Forms標記的超時值從5修改爲5000,並且這樣做了。

因此,似乎是服務器處理不當會話的問題實際上僅僅是其他機器無法及時完成認證請求。還是要謝謝你的幫助。

0

如果你更多地瞭解窗體身份驗證的細節進口的,你知道IIS/ASP.NET使用cookie來識別用戶是否已通過身份驗證。對於負載平衡方案,您需要啓用ASP.NET會話,並使用進程會話模式(建議使用SQL Server模式)。只有

以這種方式,用戶的會話貫穿機有效,他/她可以訪問身份驗證的其中一個,畢竟盒,

你需要注意的最後一位是本機鍵。對於所有盒子,它們必須使用相同的機器密鑰來加密會話信息。否則,如果用戶在一個盒子上被認證,另一個盒子不能解密該信息。

http://msdn.microsoft.com/en-us/library/ff649308.aspx

+0

如果我要使用SQL Server模式,我會必須重新驗證後端,還是仍然可以使用Windows會話憑據進行身份驗證? (請參閱原始帖子上的編輯) – Maximilian 2012-03-07 15:30:20

+0

我不確定這是否會起作用,因爲您正在使用自定義身份驗證提供程序。但通常會話模式與認證無關。 – 2012-03-08 03:45:58

相關問題