2009-03-06 13 views
57

Chciałbym włączyć usługę sieciową ASP.NET classic (ASMX) dla żądań HTTP POST i GET. Zdaję sobie sprawę, można to zrobić na maszynie lub na poziomie aplikacji, dodając ...Włączanie usługi sieciowej ASP.NET ASMX dla żądań HTTP POST/GET

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

.. do machine.config lub web.config. Moje pytanie brzmi, czy można włączyć żądania HTTP POST i GET na poziomie usługi internetowej lub poziomu metody sieciowej, a nie aplikacji czy komputera?

Mój serwis internetowy jest napisany w języku C# przy użyciu narzędzia net 3.5sp1.

Odpowiedz

45

Spróbuj zadeklarować UseHttpGet dla swojej metody.

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

co z włączeniem tej opcji dla wszystkich metod w danej usłudze bez umieszczania atrybutu na każdym z nich? – JohnIdol

+0

Przepraszam, ale wygląda na to, że nie ma opcji, aby to zrobić. – tanathos

+0

Myślę, że możesz udekorować klasę. nie jestem pewien, jak się masz –

37

Właściwie znalazłem nieco dziwaczny sposób, aby to zrobić. Dodaj protokół do pliku web.config, ale wewnątrz elementu lokalizacji. Podaj lokalizację usługi WWW jako atrybut ścieżki, na przykład:

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

Tylko nie potrzebujesz części "location". 'system.web' żyje bezpośrednio w głównym węźle' '. – vapcguy

Powiązane problemy