为什么静态方法不能用作ASMX Web服务中的Web服务操作?

Tar*_*rik 15 c# asp.net web-services asmx

我只是想知道为什么我不能在Web服务中使用静态Web方法?为什么限制?

有些人可以给我简明扼要的解释.

Joh*_*ers 23

答案是:因为你做不到.

它不是那样设计的.设计是将创建Web服务类的实例,然后将调用实例方法.

我只能猜到为什么微软会这样设计它.要确定,你必须问他们.考虑:

  1. 允许静态方法没有特别的好处.您可以使用静态方法执行任何操作,也可以使用实例方法.
  2. 一个[WebService]类并不是一个恰好用作Web服务的任意类.它旨在成为您为了公开Web服务操作而创建的类.因此,不需要支持已经存在且已经具有静态方法的类.
  3. SOAP Header实现允许您的类包含从SoapHeader类派生的类型的实例字段.该字段将填充传入的SOAP标头和/或将包含要返回的SOAP标头.您无法使用静态字段执行此操作,因为它会被每个请求覆盖.

正如我所说,这些都是猜测.这个问题的正确答案是,"你不能,因为这就是微软设计它的方式.如果你想知道他们为什么这样设计,你需要问他们".


FWIW,我刚检查过,并且看起来WCF也不允许静态方法进行操作.

  • 但我问为什么?他们不会简单地说"好吧,我们不会以这种方式设计这个东西,相反,它会以这种方式设计.哇哇哇哇".我要问的是这背后的原因. (3认同)