Câu hỏi Bật dịch vụ web ASP.NET ASMX cho các yêu cầu HTTP POST / GET


Tôi muốn kích hoạt dịch vụ web ASP.NET classic (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 ...

<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.


60
2018-03-06 13:44


gốc




Các câu trả lời:


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";
}

46
2018-03-06 14:08



làm thế nào về việc kích hoạt nó 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
xin lỗi, nhưng có vẻ như không có tùy chọn để làm điều đó - tanathos
tôi nghĩ bạn có thể trang trí lớp học. không chắc chắn thoght - Bart Calixto
Hi, làm thế nào bạn đang nhận được các thông số thông qua phương pháp này? - Nitin Sawant


Trên thực tế, tôi tìm thấy một cách hơi kỳ quặc để làm điều 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ư sau:

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

40
2018-03-21 11:52



Chỉ, bạn không cần location phần. system.web sống trực tiếp bên trong <configuration> nút. - vapcguy