2009-03-06 7 views
57

Desidero abilitare un servizio Web ASP.NET classic (ASMX) per le richieste HTTP POST e GET. Mi rendo conto che questo può essere fatto su una macchina o di livello di applicazione con l'aggiunta di ...Abilita il servizio Web ASP.NET ASMX per le richieste HTTP POST/GET

<webServices> 
    <protocols> 
     <add name="HttpGet"/> 
     <add name="HttpPost"/> 
    </protocols> 
</webServices> 

.. al machine.config o web.config. La mia domanda è: le richieste HTTP POST e GET devono essere abilitate per servizio web o livello di metodo web piuttosto che per applicazione o macchina?

Il mio servizio Web è scritto in C# utilizzando net 3.5sp1.

risposta

45

Provare a dichiarare UseHttpGet sul metodo.

[ScriptMethod(UseHttpGet = true)] 
public string HelloWorld() 
{ 
    return "Hello World"; 
} 
+1

come abilitare per tutti i metodi in un dato servizio senza mettere l'attributo su ciascuno? – JohnIdol

+0

scusate, ma sembra che non ci sia un'opzione per farlo – tanathos

+0

penso che sia possibile decorare la classe. non sono sicuro che sia il –

37

In realtà, ho trovato un modo un po 'bizzarro per farlo. Aggiungi il protocollo al tuo web.config, ma all'interno di un elemento di posizione. Specificare il percorso del servizio web come attributo del percorso, ad esempio:

<location path="YourWebservice.asmx"> 
    <system.web> 
    <webServices> 
     <protocols> 
     <add name="HttpGet"/> 
     <add name="HttpPost"/> 
     </protocols> 
    </webServices> 
    </system.web> 
</location> 
+0

Solo, non è necessaria la parte 'location'. 'system.web' risiede direttamente nel nodo principale' '. – vapcguy