2009-03-06 34 views
57

Tôi muốn kích hoạt dịch vụ web ASP.NET cổ điển (ASMX) cho các yêu cầu HTTP POST và GET. Tôi nhận thấy điều này có thể được thực hiện trên máy hoặc cấp ứng dụng bằng cách thêm ...Bật dịch vụ web ASP.NET ASMX cho các yêu cầu HTTP POST/GET

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

.. vào machine.config hoặc web.config. Câu hỏi của tôi là các yêu cầu HTTP POST và GET có thể được bật cho mỗi dịch vụ web hoặc cấp phương thức web thay vì cho mỗi ứng dụng hoặc máy không?

Dịch vụ web của tôi được viết bằng C# bằng cách sử dụng net 3.5sp1.

Trả lời

45

Cố gắng khai báo UseHttpGet trên phương thức của bạn.

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

cách bật tính năng này cho tất cả các phương thức trong một dịch vụ nhất định mà không đặt thuộc tính trên mỗi dịch vụ? – JohnIdol

+0

xin lỗi, nhưng có vẻ như không có tùy chọn để làm điều đó – tanathos

+0

tôi nghĩ bạn có thể trang trí lớp học. không chắc chắn thoght –

37

Thực ra, tôi thấy một cách hơi kỳ quặc để thực hiện việc này. Thêm giao thức vào web.config của bạn, nhưng bên trong một phần tử vị trí. Chỉ định vị trí webservice làm thuộc tính đường dẫn, như vậy:

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

Chỉ, bạn không cần phần 'vị trí'. 'system.web' sống trực tiếp bên trong nút' 'chính. – vapcguy

Các vấn đề liên quan