2010-01-05 30 views
18

Tôi đã có dịch vụ asmx lấy một tham số int duy nhất. Tôi có thể mở URL đến dịch vụ và xem màn hình mô tả dịch vụ. Từ đây tôi có thể nhập các tham số truy vấn vào một biểu mẫu và gọi dịch vụ web.Có thể gọi dịch vụ ASMX với tham số thông qua chuỗi truy vấn url?

Có cách nào để gọi trực tiếp dịch vụ web từ chuỗi URL/truy vấn không?

doesnt làm việc này:

http://localhost:4653/MyService.asmx?op=MyWebMethod&intParameter=1

Bất kỳ ý tưởng? Tôi thực sự muốn có thể làm điều này từ một liên kết tiêu chuẩn do một số vấn đề triển khai. Tôi sẽ phải yêu cầu trong một trang aspx bình thường?

Trả lời

39

Bạn có thể trang trí phương pháp của bạn để cho phép HTTP GET yêu cầu, mà phải lần lượt làm những gì bạn đang tìm kiếm như vậy:

[WebMethod] 
[ScriptMethod(UseHttpGet=true)] 
public string MyNiftyMethod(int myint) 
{ 
    // ... code here 
} 

Và chỉnh sửa web.config:

<system.web> 
<webServices> 
    <protocols> 
    <add name="HttpGet"/> 
    </protocols> 

Sau đó, bạn sẽ có thể gọi phương thức này như sau:

http://mysite.com/Service.asmx/MyNiftyMethod?myint=12345

EDIT: Lưu ý rằng phương pháp thực hiện yêu cầu GET này có một số rủi ro bảo mật. Theo MSDN documentation for UseHttpGet:

Thiết lập UseHttpGet tài sản để đúng thể gây rủi ro bảo mật cho ứng dụng của bạn nếu bạn đang làm việc với các dữ liệu nhạy cảm hoặc giao dịch. Trong yêu cầu GET, thông báo là được mã hóa bởi trình duyệt vào URL và do đó là mục tiêu dễ dàng hơn cho việc giả mạo.

+0

Tuyệt vời, tôi sẽ chụp ảnh này. – Alex

+0

Ok tác phẩm không được thực hiện này, nhận được lỗi giống hệt nhau. – Alex

+0

không hoạt động ... –

9

Dịch vụ web ASMX sử dụng SOAP. Các yêu cầu SOAP chỉ sử dụng POST để gọi các phương thức. Bạn sẽ cần phải tạo một máy khách proxy trong trang aspx của bạn để gọi dịch vụ web. Nếu bạn thực sự cần sử dụng động từ GET để gọi các dịch vụ web, bạn có thể cần sử dụng một cách tiếp cận khác như là WCF REST.

+0

Điều này đủ đơn giản và hiệu quả trong hoàn cảnh của tôi. – Alex

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