2009-10-05 33 views
17

Tôi đã tạo một dịch vụ .NET asmx thông thường. Làm thế nào để tôi quá tải các phương pháp web trong dịch vụ này?Phương thức web có thể bị quá tải không?

+0

Vấn đề là trình biên dịch sẽ không bắt nó và thông báo lỗi không cung cấp cho bạn nhiều thông tin: "Dịch vụ (x) trên máy tính cục bộ bắt đầu và sau đó dừng lại. Một số dịch vụ tự động dừng nếu chúng không được sử dụng bởi các dịch vụ hoặc chương trình khác". – NicVerAZ

Trả lời

20

WS-I (khả năng tương tác dịch vụ web) không hỗ trợ quá tải.

+4

Bạn có thể làm điều đó bằng cách vô hiệu hóa tính tương thích của WS-I, nhưng tôi không thể tự đề xuất rằng đây là câu trả lời ;-p Với mọi ý định hợp lý, đây là (IMO) câu trả lời đúng. –

0

Không. Tên phương thức dịch vụ web phải là duy nhất.

1

Có.

Thuộc tính WebMethod có tham số MessageName cho phép bạn "quá tải" phương thức.

13

Bạn thực sự không thể quá tải phương thức web. Khi bạn nghĩ về nó, điều này có ý nghĩa bởi vì một phương pháp web được thiết kế không dựa vào các công nghệ cơ bản như các ngôn ngữ OO, vì nó về mặt lý thuyết có thể chạy trong những thứ như COBOL.

Trong khi bạn có thể viết một phương pháp web mà có vẻ như nó có thể bị quá tải, bạn thực sự phải gán cho nó một cái tên khác, như trong:

[WebMethod] 
public void Add(int x, int y) 
{ 
} 
[WebMethod(MessageName="AddFloat")] 
public void Add(float x, float y) 
{ 
} 
Các vấn đề liên quan