¿Por qué los métodos estáticos no son utilizables como operaciones de servicios web en servicios web ASMX?

Solo quiero aprender por qué no puedo usar métodos web estáticos en los servicios web. ¿Por qué está restringido?

¿Puede algún cuerpo darme una explicación concisa de esto?

La respuesta es: porque no puedes.

No está diseñado de esa manera. El diseño es que se creará una instancia de la clase de servicio web y luego se llamará a un método de instancia.

Solo puedo adivinar por qué Microsoft lo diseñó de esa manera. Para estar seguro, tendrías que preguntarles. Considerar:

  1. No hay un beneficio particular para permitir métodos estáticos. Cualquier cosa que pueda hacer con un método estático, también puede hacerlo con un método de instancia.
  2. Una clase [WebService] no pretende ser una clase arbitraria que se utiliza como un servicio web. Se supone que es una clase que ha creado con el fin de exponer las operaciones del servicio web. Como tal, no hay necesidad de admitir clases que ya existen y que ya tienen métodos estáticos.
  3. La implementación del encabezado SOAP permite que su clase contenga un campo de instancia de un tipo derivado de la clase SoapHeader . Este campo se rellenará con un encabezado SOAP entrante y / o contendrá el encabezado SOAP que se devolverá. No podría hacer esto con un campo estático, ya que se sobrescribirá con cada solicitud.

Como dije, estas son todas conjeturas. La respuesta correcta a la pregunta es: “no se puede porque así es como lo diseñó Microsoft. Si quiere saber por qué lo diseñaron de esa manera, debe preguntarles”.


FWIW, acabo de comprobar, y no parece que WCF permita tampoco que los métodos estáticos funcionen.

Cuando un cliente crea un objeto para su servicio web, lo que realmente está creando es un objeto proxy para ese servicio web. Este objeto proxy maneja cosas como abrir y cerrar sus conexiones, así como todos los gastos generales de trabajar con el servicio web. Una llamada a un método estático sería difícil de gestionar. El “proxy estático” por falta de una mejor palabra tendría que hacer todas las cosas que la instancia del objeto proxy está haciendo cada vez que un cliente llama a uno de los métodos estáticos, lo que agrega una sobrecarga masiva.