2011-04-21 33 views
0

我在當前的asp.net web窗體應用程序「不是MVC」中使用窗體身份驗證,並想知道是否每個請求調用Global.asax [Application_AuthenticateRequest]和[Application_PostAuthenticateRequest]到服務器還是不?我的意思是ajax調用計數Global.asax處理或一些錯誤可能發生!因爲我在這個環節發現的衝突:asp.net窗體身份驗證Global.asax和ajax調用

http://channel9.msdn.com/forums/TechOff/256322-Strangeness-between-ASPNET-AJAX-and-Globalasax/

所以請各位指教,如果其好壞處理自定義身份驗證通過AJAX調用的Global.asax

感謝,

回答

1

AJAX調用回你的應用程序就像使用瀏覽器訪問網站一樣,所以這些事件將被解僱。

您鏈接的文章涉及您在同一個會話中發出多個請求的場景。

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

訪問ASP.NET會話狀態是每個會話,這意味着 ,如果兩個不同的用戶做出 併發請求,訪問每個 單獨的會話被授予 同時 排斥。但是,如果兩個 併發請求的 同一會議上提出的(通過使用相同的SessionID 值),第一個請求 獲取到會話 信息獨佔訪問。第二個請求 僅在第一個請求 完成後才執行。

因此,如果您從運行在瀏覽器中的AJAX代碼向您的應用程序發回了兩個請求,它們將一個接一個執行,而不是並行執行。

無法關閉此功能。

在ASP.NET MVC3就可以創建無會話控制器,通過做裝飾與此屬性控制器允許在同一時間內提供服務的同一會話的多個Ajax請求:

[SessionState(SessionStateBehavior.Disabled)] 
+0

這樣我就可以說它的安全/適當使用global.asax事件來做類似於這個問題所示的重定向:http://stackoverflow.com/questions/1879136/forms-authentication-and-post-requests-from-ajax – 2011-04-22 10:37:02

+0

或if有更好的方法你可以建議我會很感激! – 2011-04-22 10:37:42

+0

如果這是一些相當簡單的東西,那麼我不明白爲什麼。如果您打算重新使用代碼,那麼[HttpModule](http://msdn.microsoft.com/en-us/library/ms227673.aspx)可能是更好的選擇。 – Kev 2011-05-03 00:36:08