Why WebMethod declared as Static?

萝らか妹 提交于 2019-12-17 16:44:32

问题


I declared a WebMethod in my default.aspx.cs file..

[WebMethod]
public static void ResetDate()
{
   LoadCallHistory(TheNewDate.Date);
}

Why must the WebMethod method be declared static?


回答1:


They're static because they are entirely stateless, they don't create an instance of your page's class and nothing is passed to them in the request (i.e. ViewState and form field values).

HTTP is stateless by default, ASP.Net does a lot of stuff in the background with ViewState, Session, etc. during a standard page request to make life easier for developers.

When a web method is called through AJAX, the page isn't sending all the necessary form data ASP.Net embeds in a page to keep track of request state because it would make web methods too slow; and if you need to do a lot of processing you should move it out to a dedicated web service instead.

You can get access to methods on the page using HttpContext.CurrentHandler which is explained in more detail here and also the current user if you need it via HttpContext.Current.User.

There's an excellent article here explaining this in more detail.



来源:https://stackoverflow.com/questions/18463189/why-webmethod-declared-as-static

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!