powered by simpleCommunicator - 2.0.46     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Как убрать namespace'ы (xmlns:xsi и xmlns:xsd) из Body сообщений?
2 сообщений из 2, страница 1 из 1
Как убрать namespace'ы (xmlns:xsi и xmlns:xsd) из Body сообщений?
    #38104347
Фотография Farkhod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую.
Пишу клиента на .net/wcf под сервис написанный на java.
В сообщениях посылаемых моим клиентом сервису присутствуют неймспейсы в элементе Body:
Код: xml
1.
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">


Опытным путем выяснилось что если в сообщениях присутствуют неймспейсы, то сервис вообще не отвечает на запросы и происходит таймаут. Сервис отвечает только если в Body не будут неймспейсы:
Код: xml
1.
<s:Body>....</s:Body>



Для логирования запросов и ответов у меня применяются методы BeforeSendRequest и AfterReceiveReply от IClientMessageInspector.
Погуглив нашел вот этот способ: http://social.msdn.microsoft.com/Forums/en/wcf/thread/51547537-fdae-4837-9bd1-30e445d378e9
Есть что нибудь попроще?

Спасибо.
...
Рейтинг: 0 / 0
Как убрать namespace'ы (xmlns:xsi и xmlns:xsd) из Body сообщений?
    #38104766
Фотография Farkhod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема решилась пересозданием сообщения :

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel)
        {
           ...
                request = ModifyMessage(request);
           ...
        }

private Message ModifyMessage(Message oldMessage)
        {
            Message newMessage = null;
            MessageBuffer msgbuf = oldMessage.CreateBufferedCopy(int.MaxValue);
            Message tmpMessage = msgbuf.CreateMessage();
            XElement xd = tmpMessage.GetBody<XElement>();
            var ms = new MemoryStream();
            var xw = XmlWriter.Create(ms);
            xd.Save(xw);
            xw.Flush();
            xw.Close();
            ms.Position = 0;
            XmlReader xr = XmlReader.Create(ms);
            newMessage = Message.CreateMessage(tmpMessage.Version, null, xr);
            newMessage.Headers.CopyHeadersFrom(tmpMessage);
            newMessage.Properties.CopyProperties(tmpMessage.Properties);
            return newMessage;
        }



При этом тело сообщения пересоздается без неймспейсов.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Как убрать namespace'ы (xmlns:xsi и xmlns:xsd) из Body сообщений?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]