Посторонние объявления пространства имен xml тела wcf - PullRequest
2 голосов
/ 22 июля 2010

Я сгенерировал набор прокси-объектов веб-службы с помощью инструмента .Net 3.5 svcutil.exe.У элемента body мыло есть 2 объявления псевдонима пространства имен xml.В частности, пространства имен схемы и экземпляра схемы (http://www.w3.org/2001/XMLSchema, http://www.w3.org/2001/XMLSchema-instance).

По другим причинам у службы, с которой я взаимодействую, есть ошибка, из-за которой эти объявления не могут быть включены.Я пытаюсь понять, как их удалить.Любая помощь будет оценена.Сообщение мыла выглядит примерно так.

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    ...
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      ...
    </s:Body>
</s:Envelope>

Ответы [ 2 ]

4 голосов
/ 23 июля 2010

Решение, которое я нашел, состояло в том, чтобы внедрить инспектор сообщений. Я создал класс, который реализует IClientMessageInspector. Этот класс получит возможность изменить сообщение до его отправки по проводам или изменить ответ после его отключения. Затем я создаю другой класс IEndpointBehavior, который я использую для регистрации инспектора пользовательских сообщений. Наконец, я создаю класс, который расширяет BehaviorExtensionElement, чтобы позволить указать пользовательское поведение в файле конфигурации.

С помощью этого решения я могу изменять сообщение по мере его отправки на сервер и удалять ошибочные определения псевдонимов xsi и xsd.

0 голосов
/ 22 июля 2010

Я не думаю, что есть способ сделать это, если не писать вручную свои сообщения SOAP самостоятельно. Это просто обычные пространства имен схемы XML, и они не должны причинять вреда, если они не используются.

...