WCF - использовать XMI поверх REST - PullRequest
0 голосов
/ 09 марта 2012

Я пытаюсь использовать службу отдыха, которая возвращает данные XMI следующим образом:

<xmi:XMI xmlns:xmi="http://www.omg.org/XMI" xmi:version="2.0">
...
</...>

Я хочу использовать это в контракте на обслуживание следующим образом:

[ServiceContract]
[XmlSerializerFormat]
interface IMyService
{

    [OperationContract]
    [WebGet(
        BodyStyle = WebMessageBodyStyle.Bare,
        ResponseFormat = WebMessageFormat.Xml,
        UriTemplate = "myMethod")]
    MyData MyMethod();

...

}

Мои данныеКонтракт выглядит следующим образом (пуст для тестирования):

[DataContract]
[XmlRoot]
public class MyData
{
}

Я получаю следующее исключение:

Невозможно десериализовать тело XML с корневым именем 'XMI' и корневым пространством имен 'http://www.omg.org/XMI' (для операции 'MyMethod' и контракта ('IMyService', 'http://tempuri.org/')) с использованием XmlSerializer. Убедитесь, что тип, соответствующий XML, добавлен в коллекцию известных типов службы.

У кого-нибудь есть идеи? (Ямогу использовать другие службы REST без пространств имен)

1 Ответ

0 голосов
/ 10 марта 2012

Хорошо, нашел ответ сам: Вы должны указать пространство имен и имя корневого элемента:

[XmlRoot(Namespace = "http://www.omg.org/XMI", ElementName = "XMI")]
public class MyData
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...