Próbuję mieć przeciążone metody w usłudze sieciowej, ale dostaję wyjątek System.InvalidOperationException przy próbie "Dodaj odniesienie do sieci" w Visual Studio 2005 (tutaj są odpowiednie fragmenty kodu):Jak uzyskać dostęp do usługi sieciowej z przeciążonymi metodami
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
Myślałem, dostarczając na inną nieruchomość MessageName atrybutu WebMethod by rozwiązać ten problem, ale tutaj jest cały komunikat o błędzie pojawia się:
Zarówno system.string UploadFileBasic (system.string, Byte [ ], System.String, System.String) i System.String UploadFile (System.String, Byte [], System.String, System.String) użyj t nazwa wiadomości "UploadFileBasic". Użyj właściwości MessageName niestandardowego atrybutu WebMethod, aby określić unikalne nazwy komunikatów dla metod.
Usługa internetowa kompiluje OK; Nie widzę, co tu jest nie tak.
widzę błąd moich sposobów teraz. Mój klient WWW może wywołać funkcję UploadFile lub UploadFileBasic. Moja usługa sieciowa definiuje je teraz jednoznacznie (bez przeciążania). Co ważniejsze, dzięki kolejnej sugestii w innym miejscu kod dla UploadFileBasic jest teraz po prostu wywołaniem funkcji UploadFile dostarczającej pustą tablicę jako ostatni parametr. Dziękuję za twoją pomoc, John. –
Ten wpis nie odpowiada na pytanie, więc po co zawracać sobie głowę? – Gnial0id
@ Gnial0id: ponad 5 lat temu PO czuł, że jest to odpowiedź, a 12 innych osób również głosowało. Po co zawracać sobie głowę komentowaniem? Prawdziwą odpowiedzią na pytanie "jak radzić sobie z przeciążonymi metodami w usłudze sieciowej SOAP" jest "SOAP nie ma koncepcji przeciążonych metod". –