Как проверить, что такое soap meesage, передаваемое на сервер по нажатию кнопки? Скрипач?

#asp.net #web-services #debugging #wsdl #fiddler

#asp.net #веб-сервисы #отладка #wsdl #скрипач

Вопрос:

Я хочу зафиксировать запрос SOAP и фактический ответ от веб-сервиса.

Сценарий: При нажатии кнопки в asp.net приложение, которое я вызываю веб-сервис. Веб-служба возвращает исключение : System.Web.Services.Protocols.SoapHeaderException: Access is denied. at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at WebRefProject.HRWS.TeamMemberData201012Service.getTeamMemberProfilesByFullName(GetTeamMemberProfilesByFullNameRequest_Type getTeamMemberProfilesByFullName1) in C:ProjectFinalPATWebCode1PSVWebRefProjectWeb ReferencesHRWSReference.cs:line 138 at UIPSAT.GetUserDetails.GetUserDetailsbyFullName(String searchValue) in C:ProjectFinalPATWebCode1PSVUIGetUserDetails.cs:line 209

Объяснение:

  1. У меня есть asp.net приложение, которое вызывает веб-службу для поиска сведений о сотруднике.
  2. WS требует сертификаты, и мы прикрепляем их к запросу.
  3. Служба работает хорошо на локальном сервере с локальным сертификатом.
  4. Он не работает на сервере разработчиков и выдает вышеупомянутое исключение.
  5. Пример приложения хорошо работает на Dev с сертификатом Dev.
  6. Как я узнаю, какое SOAP отправляется веб-службе?
  7. Также я не смог добавить ссылку на веб-службу непосредственно в решение, поскольку оно было защищено, и Visual Studio IDE не смогла его добавить.
  8. Однако файл WSDL не был защищен. Оно было успешно добавлено, и URL веб-службы был изменен на основе соответствующих серверных сред.

Как проверить запрос SOAP и ответ?

Комментарии:

1. Веб-служба локальная или удаленная? Скрипач должен уметь делать и то, и другое, но конфигурация отличается.

Ответ №1:

Комментарии:

1. Веб-сервис размещен на другом сервере. Удаленный. Я не могу видеть запрос soap, даже когда я проверяю с помощью fiddler.

2. Установлен ли у вас фильтр в Fiddler? Запрос поступает с локального компьютера, на котором также запущен Fiddler?

3. Позвольте мне попытаться объяснить: 1) У меня есть asp.net приложение, которое вызывает веб-службу для поиска сведений о сотруднике. 2) WS требует сертификаты, и мы прикрепляем их к запросу. 3) Служба работает нормально на локальном сервере с локальным сертификатом. 4) Он не работает на сервере разработки и выдает вышеупомянутое исключение. 5) Пример приложения хорошо работает на Dev с сертификатом Dev. 6) Как мне узнать, какое SOAP отправляется веб-службе? 7) Также я не смог добавить ссылку на веб-службу непосредственно в решение, поскольку оно было защищено, и Visual Studio IDE не смогла его добавить.

4. 8) Однако файл WSDL не был защищен. Оно было успешно добавлено, и URL веб-службы был изменен на основе соответствующих серверных сред.

5. Похоже, у вас здесь происходит несколько проблем. Скрипач должен иметь возможность проверять трафик с вашего локального компьютера на сервер просто отлично. Если вы тестируете на «localhost», вам нужно будет добавить точку после «localhost», чтобы сделать его «localhost». для того, чтобы Fiddler получал трафик.

Ответ №2:

Вы можете использовать средства регистрации диагностических сообщений WCF. Просто настройте его на своем клиенте, сообщения soap будут регистрироваться. Например:

 <diagnostics>     
   <messageLogging              
    logEntireMessage="true"              
    logMalformedMessages="true"             
    logMessagesAtServiceLevel="true"     
    logMessagesAtTransportLevel="true"             
    maxMessagesToLog="1000"             
    maxSizeOfMessageToLog="5000"/>       
</diagnostics>
  

Комментарии:

1. Это Visual Studio 2005 ASP. Сетевое приложение.

Ответ №3:

Вы можете настроить SoapUI (http://www.soapui.org /) действовать как прокси-сервер для ведения журнала между клиентом вашей веб-службы и сервером. Настройте свой клиент для подключения к экземпляру прокси SoapUI, запущенному на хосте клиента. Настройте экземпляр SoapUI для последующей пересылки в службу на удаленном сервере.

Комментарии:

1. Да. Удалось получить файл журнала, созданный с использованием ведения журнала диагностики. Использовалось следующее: <system.diagnostics> <sources> <имя источника=»System.Net » tracemode=»includehex» maxdatasize=»1024″> <слушатели> <добавить имя =»System.Net «/> </listeners> </source> <имя источника=»System.Net.Sockets»> <слушатели> <добавить имя =»System.Net «/> </listeners> </source> <имя источника=»System.Net.Cache»> <слушатели> <добавить имя =»System.Net «/> </слушатели> </источник> </sources> <переключатели> <добавить имя =»System.Net » значение =»Подробный»/> <добавить имя=»System.Net.Sockets» значение =»Подробный»/>

2. <добавить имя=»System.Net.Cache» значение =»Verbose»/> </ switches> <sharedListeners> <добавить имя =»System.Net «type=»System. Диагностика. TextWriterTraceListener»initializeData=»C:Projects1PSVWebCode1PSVUIbintrace.log » /> </sharedListeners> <автозапуск трассировки=»true»/> </system.diagnostics>

Ответ №4:

Вы можете получить файл трассировки в определенное местоположение. Добавьте следующее в файл web.Config :