7
我宣佈我default.aspx.cs文件一個WebMethod ..爲什麼WebMethod聲明爲靜態?
[WebMethod]
public static void ResetDate()
{
LoadCallHistory(TheNewDate.Date);
}
爲什麼必須將WebMethod方法聲明爲static?
我宣佈我default.aspx.cs文件一個WebMethod ..爲什麼WebMethod聲明爲靜態?
[WebMethod]
public static void ResetDate()
{
LoadCallHistory(TheNewDate.Date);
}
爲什麼必須將WebMethod方法聲明爲static?
它們是靜態的,因爲它們完全是無狀態的,它們不會創建頁面類的實例,也不會在請求中傳遞任何內容(即ViewState和表單字段值)。
默認情況下,HTTP是無狀態的,在標準頁面請求期間,ASP.Net在後臺使用ViewState,Session等進行了很多工作,以使開發人員的工作更輕鬆。
當通過AJAX調用Web方法時,頁面並未發送所有必需的表單數據ASP.Net嵌入頁面中以跟蹤請求狀態,因爲它會使Web方法太慢;如果你需要做很多處理,你應該將它移出到一個專門的Web服務。
您可以訪問的方法,使用HttpContext.CurrentHandler其更詳細解釋here頁面上,也是當前用戶如果通過HttpContext.Current.User需要它。
有一篇很好的文章here更詳細地解釋了這一點。
困惑。爲什麼此[頁](https://msdn.microsoft.com/en-us/library/byxd99hx%28v=vs.90%29.aspx)中的webmethods非靜態? – Moon
因爲它託管在Web服務中而不是網頁上。 – Sean