2009-03-06 21 views
57

HTTP POST ve GET istekleri için bir ASP.NET classic (ASMX) web hizmeti etkinleştirmek istiyorum. Ben machine.config veya web.config için .. ...HTTP POST/GET istekleri için ASP.NET ASMX web hizmetini etkinleştir

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

bu ekleyerek bir makine veya uygulama düzeyinde yapılabilir biliyoruz. Sorum şu olabilir: HTTP POST ve GET istekleri, uygulama veya makine başına değil, web hizmeti veya web yöntemi düzeyinde etkinleştirilebilir mi?

Web hizmetim net 3.5sp1 kullanarak C# ile yazılmıştır.

cevap

45

Yönteminiz üzerinde UseHttpGet'i bildirmeye çalışın.

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

nasıl her biri üzerinde niteliği koymadan, belirli bir hizmetin tüm yöntemler için etkinleştirme hakkında? – JohnIdol

+0

Üzgünüz, ama o – tanathos

+0

yapmak için bir seçenek yok gibi görünüyor sanırım sınıf süsleyebilirsiniz. emin değilsiniz –

37

Aslında bunu yapmak için biraz tuhaf bir yol buldum. Protokolü web.config dosyanıza ekleyin, ancak bir konum öğesinin içinde. şöyle, yol niteliği olarak webservice yer belirtin:

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

Sadece 'konum' bölümüne ihtiyacınız yok. system.web, doğrudan ana düğümü içinde yaşıyor. – vapcguy

İlgili konular