Веб-сервис ASMX с параметром Guid - PullRequest
4 голосов
/ 05 февраля 2010

У меня есть веб-сервис asmx со следующим методом

    [WebMethod]
    public string LoadRegions(Guid id)
    {
        throw new NotImplementedException();
    }

Когда я пытаюсь вызвать этот метод, я получаю следующее исключение:

System.InvalidOperationException: LoadRegions Web Service method 
name is not valid.
at System.Web.Services.Protocols.HttpServerProtocol.Initialize()

Если я изменю тип параметра с Guid, скажем, на string, проблема исчезнет. Предложения? В целях тестирования я звоню в службу с этим URL из Firefox:

http://localhost:81/services/ContactService.asmx/LoadRegions
?id=6C388126-5787-4B63-AAFE-5BCC4EA4DF83

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 05 февраля 2010

Я пытаюсь найти формальную документацию, но кажется, что вы не можете использовать GUID в качестве типа ввода для WebMethod, потому что это не то, что может быть проверено при входе. Но я не могу найти точную документация по нему.

Скорее всего, я бы оставил его как строковый параметр, и первая строка вашего метода сделала бы Guid.Parse для проверки того, что это GUID, если нет, отправьте пользователю исключение. Это то, как я видел это в других реализациях, которые требуют GUID для WebMethod.

1 голос
/ 05 февраля 2010

Вы пробовали это, используя сервис с реальным вызовом SOAP?

Я не думаю, что http GET позволит вам указать сложные типы.

Я также почти уверен, что 6C388126-5787-4B63-AAFE-5BCC4EA4DF83 представляет только GUID для нас, людей, это строка для компьютера - по сути, у вас есть несоответствие типов, и они не являются методом, определенным с правильными аргументами (поскольку ОС обеспокоена).

...