2015-08-05 2 views
1

WCF. Framework 4.5.1WCF DataContractSerializer и XMLSerializer как в одном сервисе. Возможное?

Существующий веб-сервис использует DataContractSerializer.

Теперь необходимо предоставить контракт, в котором данные XMLSerialized передаются от третьей стороны в качестве входного параметра и возвращать сериализованный объект.

Видимо, я должен уметь декорировать этот контракт с помощью [XMLSerializerFormat]. Но это нарушает опубликованный сайт. т. Е. Вы даже не можете получить доступ к сайту с помощью веб-браузера, чтобы получить wsdl.

Есть ли необходимость в дополнительной работе в Web.Config?

[OperationContract] 
     [XmlSerializerFormat] 
     [WebInvoke(UriTemplate = "", Method = "POST")] 
     ResponseMessage Update(RequestMessage instance); 

Контракт сидит внутри интерфейса со всеми существующими контрактами Интерфейс украшенных

[ServiceContract] 
public interface IMyService 
{ 

Благодаря Боб

ответ

0

Проблема в том, что контракт не был специально украшен XML , По-видимому, предположением по умолчанию является JSON. Рабочая декларация:

[OperationContract] 
    [XmlSerializerFormat] 
    [WebInvoke(UriTemplate = "Update", Method = "POST", 
     ResponseFormat = WebMessageFormat.Xml, 
     RequestFormat = WebMessageFormat.Xml)] 
    ResponseMessage Update(RequestMessage instance); 

«Ответ», который я выразил, выявил очень странное поведение.

С помощью декодирования [XMLSerializer] другие контракты больше не могут десериализовать целые числа. Целочисленное свойство оставляет клиентом, как говорят 6, и десериализуется как 0. Прокомментируйте украшение и нормальное поведение. Я отправлю отдельный вопрос по этому вопросу.

Смежные вопросы