2013-08-27 139 views

回答

7

它們是靜態的,因爲它們完全是無狀態的,它們不會創建頁面類的實例,也不會在請求中傳遞任何內容(即ViewState和表單字段值)。

默認情況下,HTTP是無狀態的,在標準頁面請求期間,ASP.Net在後臺使用ViewState,Session等進行了很多工作,以使開發人員的工作更輕鬆。

當通過AJAX調用Web方法時,頁面並未發送所有必需的表單數據ASP.Net嵌入頁面中以跟蹤請求狀態,因爲它會使Web方法太慢;如果你需要做很多處理,你應該將它移出到一個專門的Web服務。

您可以訪問的方法,使用HttpContext.CurrentHandler其更詳細解釋here頁面上,也是當前用戶如果通過HttpContext.Current.User需要它。

有一篇很好的文章here更詳細地解釋了這一點。

+2

困惑。爲什麼此[頁](https://msdn.microsoft.com/en-us/library/byxd99hx%28v=vs.90%29.aspx)中的webmethods非靜態? – Moon

+2

因爲它託管在Web服務中而不是網頁上。 – Sean

相關問題