Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 为什么WebMethod声明为静态?_Asp.net_Webmethod - Fatal编程技术网

Asp.net 为什么WebMethod声明为静态?

Asp.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

我在default.aspx.cs文件中声明了一个WebMethod

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

为什么WebMethod方法必须声明为静态的?

它们是静态的,因为它们完全是无状态的,它们不创建页面类的实例,并且在请求中没有向它们传递任何内容(即ViewState和form字段值)

HTTP在默认情况下是无状态的,ASP.Net在标准页面请求期间在后台使用ViewState、Session等执行大量操作,以使开发人员的工作更轻松

当通过AJAX调用web方法时,页面没有发送ASP.Net嵌入到页面中以跟踪请求状态所需的所有表单数据,因为这会使web方法太慢;如果你需要做大量的处理,你应该把它转移到一个专门的web服务上

您可以通过访问页面上的方法,其中有更详细的说明,如果您需要,还可以通过访问当前用户


有一篇精彩的文章更详细地解释了这一点。

。为什么webmethods是非静态的?因为它托管在web服务中而不是网页上。