Asp.net 为什么WebMethod声明为静态?
我在default.aspx.cs文件中声明了一个WebMethodAsp.net 为什么WebMethod声明为静态?,asp.net,webmethod,Asp.net,Webmethod,我在default.aspx.cs文件中声明了一个WebMethod [WebMethod] public static void ResetDate() { LoadCallHistory(TheNewDate.Date); } 为什么WebMethod方法必须声明为静态的?它们是静态的,因为它们完全是无状态的,它们不创建页面类的实例,并且在请求中没有向它们传递任何内容(即ViewState和form字段值) HTTP在默认情况下是无状态的,ASP.Net在标准页面请求期间在后台使用V
[WebMethod]
public static void ResetDate()
{
LoadCallHistory(TheNewDate.Date);
}
为什么WebMethod方法必须声明为静态的?它们是静态的,因为它们完全是无状态的,它们不创建页面类的实例,并且在请求中没有向它们传递任何内容(即ViewState和form字段值) HTTP在默认情况下是无状态的,ASP.Net在标准页面请求期间在后台使用ViewState、Session等执行大量操作,以使开发人员的工作更轻松 当通过AJAX调用web方法时,页面没有发送ASP.Net嵌入到页面中以跟踪请求状态所需的所有表单数据,因为这会使web方法太慢;如果你需要做大量的处理,你应该把它转移到一个专门的web服务上 您可以通过访问页面上的方法,其中有更详细的说明,如果您需要,还可以通过访问当前用户
有一篇精彩的文章更详细地解释了这一点。。为什么webmethods是非静态的?因为它托管在web服务中而不是网页上。