powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / как запротоколировать обращения к web-сервису
10 сообщений из 10, страница 1 из 1
как запротоколировать обращения к web-сервису
    #36851454
как на сайте, обращающемся к web-сервису - увидеть протокол вызова сервиса?

то есть сделать некое действие, подобное тому, какое делает wireshark - чтобы ТОЧНО увидеть свой сериализованный обьект?
мне нужно нечто, подобное событию prepender в ASP.NET, которое вызывается уже для полностью сформированной ASP.NET-странички перед отправкой ее на сервер

проблема в том, что web-сервис (к которому я обращаюсь) весьма сложен - ну это многие десятки полей - которые обязательны в трудноуловимых комбинациях плюс форматы данных под большим вопросом - ну допустим кодировки спецсимволов, количество нулей после запятой в числах и так далее - все это желательно было бы увидеть уже после SOAP-сериализатора

суппорт сервиса (в моем случае) отвечает на вопросы тоже только по предъявлению SOAP-протокола обращения к сервису

на локальной машине я бы мог запустить wireshark, но разработка ведется на одной машине, а показывать надо начальству на другой машине - когда сайт уже выложен на хостинг - и wireshark уже никак не запустить - с чужого хостинга идут запросы на чужой удаленный сервис
а начальство хочет видеть входные параметры забиваемые в мою софтину и когда происходит обращение к удаленному сервису - видеть протокол обращения к сервису (ну и проблема в том что в 99% случаев удаленный сервис отвечат - неверные параметры)

как увидеть мой SOAP обращения на моем сайте?
...
Рейтинг: 0 / 0
как запротоколировать обращения к web-сервису
    #36851458
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот, почти слово в слово
...
Рейтинг: 0 / 0
как запротоколировать обращения к web-сервису
    #36851465
спс, bured, разбираюсь

если не пойму - переспрошу
если не переспрошу - значит все получилось !
...
Рейтинг: 0 / 0
как запротоколировать обращения к web-сервису
    #36851498
ай, получилось отлично - спс за наколку bured
...
Рейтинг: 0 / 0
как запротоколировать обращения к web-сервису
    #36854103
Хм, однако в BeforeSendRequest все не настолько хорошо

общий шаблон кода для BeforeSendRequest я так и не подгадал нормальный
что-то мой код портит и уже возрата ответа от сервиса не происходит
может есть у кого-нибудь пример кода для BeforeSendRequest ?
...
Рейтинг: 0 / 0
как запротоколировать обращения к web-сервису
    #36854771
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Быдло-Кодерможет есть у кого-нибудь пример кода для BeforeSendRequest ?
BeforeSendRequest демонстрирует подмену пользовательского значения параметра.

Код: plaintext
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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
public class <Инспектор> : IClientMessageInspector
{
    /// <summary>
    /// Модификация сообщения до запроса к серверу
    /// </summary>
    /// <param name="request"></param>
    /// <param name="channel"></param>
    /// <returns></returns>
    public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel)
    {
        System.ServiceModel.Channels.Message newMessage = null;
    
        var msgbuf = request.CreateBufferedCopy(int.MaxValue);
        var tmpMessage = msgbuf.CreateMessage();
        var document = new XmlDocument();

        using (var dictreader = tmpMessage.GetReaderAtBodyContents())
        {
            document.Load(dictreader);
        }

        foreach (XmlElement node in document.ChildNodes)
        {
            foreach (XmlElement subnode in node.ChildNodes)
            {
                subnode.InnerText = int.MaxValue.ToString(); // Подменяем параметр запроса GetData(int)
            }
        }

        var stream = new MemoryStream();
        using (var writer = XmlWriter.Create(stream))
        {
            document.Save(writer);
            writer.Flush();
            stream.Position = 0;

            var reader = XmlReader.Create(stream);

            // Формирование нового сообщения
            newMessage = System.ServiceModel.Channels.Message.CreateMessage(request.Version, null, reader);
            newMessage.Headers.CopyHeadersFrom(request);
            newMessage.Properties.CopyProperties(request.Properties);
        }

        request = newMessage;
        return null;
    }
}
...
Рейтинг: 0 / 0
как запротоколировать обращения к web-сервису
    #36854992
спс за пример, буду пробовать применить его для своей ситуации
...
Рейтинг: 0 / 0
как запротоколировать обращения к web-сервису
    #36858227
сегодня продолжил заниматься этой задачей.
не понимаю, или я туплю или я копаю в другую строну

в примерах кода выше - я вижу обращения к сервисам ДО сериализации (или я чего-то не понимаю?) - а это мне вообще не нужно и не интересно

сериализатор настолько меняет мои параметры обращения, что на входе сериализатора мне вообще не интересно что-либо смотреть - мне требуется в поддержку передавать (и начальству показывать) ПОЛНОЕ обращение к сервису - в таком примерно виде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <SOAP-ENV:Body>
               <m:GetPaymentsResult ...
...
</SOAP-ENV
Можно ли в этих behavior получить полный протокол обращения к сервису (не только тело, но и конверт)?
...
Рейтинг: 0 / 0
как запротоколировать обращения к web-сервису
    #36858481
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Быдло-Кодерв примерах кода выше - я вижу обращения к сервисам ДО сериализации (или я чего-то не понимаю?) - а это мне вообще не нужно и не интересно
Зачем тогда задавали вопрос:
Быдло-Кодерможет есть у кого-нибудь пример кода для BeforeSendRequest ?
Вы читали в справке, когда вообще выполняется IClientMessageInspector.BeforeSendRequest?

P.S. Читайте про IClientMessageInspector.AfterReceiveReply
...
Рейтинг: 0 / 0
как запротоколировать обращения к web-сервису
    #36858846
я подумал что в этих методах можно вычитать конверт
по ходу дела стало ясно, что наверное нельзя
тупо как-то - все говорят о трафик-инспекторе
такие же названия у методов
и bured так же ответил

какой же это инспектор?
это BodyInspector - но никак на TraficInspector
эти все методы никак не похожи на метод Prerender в ASP.NET
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / как запротоколировать обращения к web-сервису
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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