Tôi đang cố gắng có các phương thức quá tải trong dịch vụ web nhưng tôi nhận được System.InvalidOperationException khi cố gắng "Thêm tham chiếu web" trong Visual Studio 2005 (đây là đoạn mã có liên quan)):Cách truy cập dịch vụ web với các phương thức quá tải
public class FileService : System.Web.Services.WebService
{
private static readonly MetaData[] EmptyMetaData = new MetaData[0];
public FileService()
{
// a few innocent lines of constructor code here...
}
[WebMethod(MessageName = "UploadFileBasic",
Description = "Upload a file with no metadata properties")]
public string UploadFile(string trimURL
, byte[] incomingArray
, string fileName
, string TrimRecordTypeName)
{
return UploadFile(trimURL
, incomingArray
, fileName
, TrimRecordTypeName
, EmptyMetaData);
}
[WebMethod(MessageName = "UploadFile",
Description = "Upload a file with an array of metadata properties (Name/Value pairs)")]
public string UploadFile(string trimURL
, byte[] incomingArray
, string FileName
, string TrimRecordTypeName
, MetaData[] metaDataArray)
{
// body of UploadFile function here
tôi nghĩ cung cấp một thuộc tính MessageName khác nhau trên đặc tính WebMethod sẽ khắc phục vấn đề này, nhưng đây là toàn bộ thông báo lỗi tôi nhận được:
Cả System.String UploadFileBasic (System.String, Byte [ ], System.String, System.String) và System.String UploadFile (System.String, Byte [], System.String, System.String) sử dụng t tên thông báo 'UploadFileBasic'. Sử dụng thuộc tính MessageName của thuộc tính tùy chỉnh WebMethod để chỉ định tên thông báo duy nhất cho các phương thức.
Dịch vụ web biên dịch OK; Tôi không thể thấy điều gì sai ở đây.
Tôi thấy lỗi cách của tôi bây giờ. Webclient của tôi có thể gọi UploadFile hoặc UploadFileBasic. Webservice của tôi xác định cả hai duy nhất bây giờ (không quá tải). Đáng kể hơn, nhờ một gợi ý khác ở đâu đó, mã cho UploadFileBasic bây giờ đơn giản là việc gọi UploadFile cung cấp một mảng trống làm tham số cuối cùng. Cảm ơn tất cả sự giúp đỡ của bạn, John. –
Bài đăng này không thực sự trả lời câu hỏi, vậy tại sao phải bận tâm? – Gnial0id
@ Gnial0id: hơn 5 năm trước, OP cảm thấy rằng đó là câu trả lời và 12 người khác cũng đã bỏ phiếu. Tại sao bận tâm bình luận về nó? Câu trả lời thực sự cho "làm thế nào để đối phó với các phương thức quá tải trong một dịch vụ web SOAP" là "SOAP không có khái niệm về các phương thức quá tải". –