СТранное сообщение об ошибке вызова WCF JSON сервиса
От: Northrop  
Дата: 24.09.14 16:01
Оценка:
В студии 2013 через Add Service Reference выполнил импорт одного WCF JSON сервиса. При его вызове я получаю вот такое исключение:

Operation 'SetImage' of contract 'IImageProviderService' specifies multiple request body parameters to be serialized without any wrapper elements. At most one body parameter can be serialized without wrapper elements. Either remove the extra body parameters or set the BodyStyle property on the WebGetAttribute/WebInvokeAttribute to Wrapped.



Никак не пойму , чего ему от меня надо? Сервис я поменять не могу. Как мне заставить его работать, не прибегая к ручному вызову HTTP запросов?
Re: СТранное сообщение об ошибке вызова WCF JSON сервиса
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.09.14 16:04
Оценка:
Здравствуйте, Northrop, Вы писали:

N>Никак не пойму , чего ему от меня надо? Сервис я поменять не могу. Как мне заставить его работать, не прибегая к ручному вызову HTTP запросов?


Так сделай ровно то, что он просит, укажи в атрибуте BodyStyle = WebMessageBodyStyle.Wrapped.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: СТранное сообщение об ошибке вызова WCF JSON сервиса
От: Northrop  
Дата: 24.09.14 17:19
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Northrop, Вы писали:


N>>Никак не пойму , чего ему от меня надо? Сервис я поменять не могу. Как мне заставить его работать, не прибегая к ручному вызову HTTP запросов?


AVK>Так сделай ровно то, что он просит, укажи в атрибуте BodyStyle = WebMessageBodyStyle.Wrapped.


Если бы я был хозяином сервиса, то я бы это сделал. Но сервис есть такой, какой есть. Я могу только на импорт из студии повлиять. Как мне тут быть?
Re[3]: СТранное сообщение об ошибке вызова WCF JSON сервиса
От: Слава  
Дата: 25.09.14 13:12
Оценка: -1
Здравствуйте, Northrop, Вы писали:

N>Если бы я был хозяином сервиса, то я бы это сделал. Но сервис есть такой, какой есть. Я могу только на импорт из студии повлиять. Как мне тут быть?


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

И, мне кажется, очень не хватает в стране проекта, чтобы отлавливали вот таких нестандартных хозяев сервиса и били им лицо под камеру. Не тем Тесак занимался, ой не тем...
Re[3]: СТранное сообщение об ошибке вызова WCF JSON сервиса
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.09.14 15:19
Оценка:
Здравствуйте, Northrop, Вы писали:

N>Если бы я был хозяином сервиса, то я бы это сделал.


При чем тут хозяин сервиса? Открой ручками исходник прокси да поправь.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[4]: СТранное сообщение об ошибке вызова WCF JSON сервиса
От: Northrop  
Дата: 26.09.14 14:06
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Northrop, Вы писали:


N>>Если бы я был хозяином сервиса, то я бы это сделал.


AVK>При чем тут хозяин сервиса? Открой ручками исходник прокси да поправь.


А у кого править — у метода или у класса IImageProviderService? И как быть с обновлением прокси из студии при регенерации ее? Ведь тогда мои руками добавленные атрибуты грохнутся.
Re[5]: СТранное сообщение об ошибке вызова WCF JSON сервиса
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.09.14 15:48
Оценка:
Здравствуйте, Northrop, Вы писали:

N>А у кого править — у метода или у класса IImageProviderService?


У метода.

N> И как быть с обновлением прокси из студии при регенерации ее?


Не обновлять.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[6]: СТранное сообщение об ошибке вызова WCF JSON сервиса
От: Northrop  
Дата: 26.09.14 18:38
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Northrop, Вы писали:


N>>А у кого править — у метода или у класса IImageProviderService?


AVK>У метода.


N>> И как быть с обновлением прокси из студии при регенерации ее?


AVK>Не обновлять.


Раздобыл описание интерфейса сервиса с атрибутами и поменял в прокси:

        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IImageProviderService/GetImage", ReplyAction="http://tempuri.org/IImageProviderService/GetImageResponse")]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
        Z.ImageProviderServiceReference.GetImageResult GetImage(Z.ImageProviderServiceReference.HeaderInfo header, Z.ImageProviderServiceReference.ImageFormatInfo format, Z.ImageProviderServiceReference.ImageTransactionInfo transaction);


Но ничего не поменялось после перекомпиляции и запуска. Все так же сетует на отсутствие WebInvoke.BodyStyle = Wrapped
Re: СТранное сообщение об ошибке вызова WCF JSON сервиса
От: Andir Россия
Дата: 27.09.14 21:31
Оценка: 24 (1)
Здравствуйте, Northrop, Вы писали:

N>Никак не пойму , чего ему от меня надо? Сервис я поменять не могу. Как мне заставить его работать, не прибегая к ручному вызову HTTP запросов?


Add Service Reference не умеет работать с WCF REST (атрибуты WebGet и WebInvoke не генерятся, они не присутствуют в метаданных SOAP). Надо использовать родные контракты и клиента писать самому.
Mixing Add Service Reference and WCF Web HTTP (a.k.a. REST) endpoint does not work

P.S. Ещё можно самому в сгенерённом клиенте проставить атрибуты WebGet и WebInvoke, тоже должно помочь.

C Уважением, Andir!
using(<< RSDN@Home 1.2.0 alpha 5 rev. 74>>) { /* Работаем */ }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.