La risposta è: perché non è possibile.
Non è progettato in questo modo. Il progetto prevede la creazione di un'istanza della classe del servizio Web, quindi verrà chiamato un metodo di istanza.
Posso solo immaginare perché Microsoft l'ha progettato in questo modo. Per saperlo con certezza, dovresti chiederlo a loro. Considerare:
- Non c'è alcun vantaggio particolare nel consentire i metodi statici. Qualunque cosa tu possa fare con un metodo statico, puoi anche fare con un metodo di istanza.
- Una classe
[WebService]
non è destinata a essere una classe arbitraria che viene utilizzata come servizio Web. È pensato per essere una classe che hai creato allo scopo di esporre le operazioni di servizio web. Pertanto, non è necessario supportare classi già esistenti e già dotate di metodi statici.
- L'implementazione Header SOAP consente alla classe di contenere un campo di istanza di un tipo derivante dalla classe
SoapHeader
. Questo campo verrà riempito con un'intestazione SOAP in entrata e/o conterrà l'intestazione SOAP da restituire. Non è possibile farlo con un campo statico, in quanto verrebbe sovrascritto con ciascuna richiesta.
Come ho detto, queste sono tutte ipotesi. La risposta corretta alla domanda è "non puoi perché è così che è stato progettato da Microsoft: se vuoi sapere perché l'hanno progettata in questo modo, devi chiedere loro".
FWIW, ho appena controllato, e non sembra che WCF permette metodi statici per essere operazioni sia.
fonte
2009-08-11 22:42:38
BTW, sei a conoscenza del fatto che Microsoft ora consideri i servizi Web ASMX come "tecnologia legacy" e che abbiano smesso di correggere i bug? Dovresti usare WCF. –
Non ero a conoscenza di ciò :(. – Tarik
Atarikg, WCF supporta i webservice di base nella sua implementazione e molto altro ancora (è un framework enorme e completo) .E 'piuttosto lucido. Non sono sicuro se i metodi statici sono permessi in un servizio WCF anche se sono in cima alla mia testa. –