Я пытаюсь перегружать методы в веб-службе, но я получаю исключение System.InvalidOperationException при попытке «Добавить веб-ссылку» в Visual Studio 2005 (вот соответствующие фрагменты кода):Как получить доступ к веб-службе с перегруженными методами
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
Я думал, поставляя различное MessageName собственности на атрибуте WebMethod бы решить эту проблему, но здесь все сообщение об ошибке я получаю:
Оба System.String UploadFileBasic (System.String, Byte [ ], System.String, System.String) и System.String UploadFile (System.String, Byte [], System.String, System.String) используют t имя сообщения 'UploadFileBasic'. Используйте свойство MessageName для настраиваемого атрибута WebMethod для указания уникальных имен сообщений для этих методов.
Веб-сервис компилируется ОК; Я не вижу, что здесь не так.
Я вижу ошибку моего пути в настоящее время. Мой веб-клиент может вызывать либо UploadFile, либо UploadFileBasic. Теперь мой web-сервис определяет как однозначно (без перегрузки). Более того, благодаря другому предложению в другом месте, код для UploadFileBasic теперь просто является вызовом UploadFile, который представляет пустой массив в качестве последнего параметра. Спасибо вам за вашу помощь, Джон. –
Это сообщение на самом деле не отвечает на вопрос, так зачем беспокоиться? – Gnial0id
@ Gnial0id: более 5 лет назад ОП считал, что это был ответ, и еще 12 человек проголосовали. Зачем беспокоиться об этом? Реальный ответ на вопрос «как бороться с перегруженными методами в веб-службе SOAP» - это «SOAP не имеет понятия перегруженных методов». –