Клиент WCF ничего не возвращает в ответ на сторонний веб-сервис

У меня есть сторонний веб-сервис (случайно это сервис Peoplesoft EIP), который я пытаюсь вызвать из .net. Я пытался использовать ссылку на службу и старую веб-ссылку для вызова этой службы, и каждый раз, когда я ее вызываю, я получаю от службы ответ «ничего».

Я запустил сервисный вызов через SoapUI, и он отлично работает. Я перехватил сетевой трафик с помощью Fiddler и заметил, что когда я вызываю службу из SoapUi или из .Net, я получаю тот же результирующий xml в ответ на вызов. Значит звонок работает. Я включил трассировку и ведение журнала в WCF и не вижу никаких ошибок. И это не исключение.

Итак, моя теория заключается в том, что .net с трудом переводит xml из службы обратно в объект .net.

Вот фрагмент моего кода:

Dim psclient As New psService.LSS_WEBORDER_PortTypeClient

Dim psreq As New psService.LSS_WEBORDER_REQ_MSG_TypeShape
psreq = New psService.LSS_WEBORDER_REQ_MSG_TypeShape

Dim orderinfo(1) As psService.Transaction_TypeShape

Dim captureid As String = "WB" & Right(Guid.NewGuid.ToString, 8)
orderinfo(0) = New psService.Transaction_TypeShape
orderinfo(0).LSS_WEBOHDR_WRK = New psService.LSS_WEBOHDR_WRKMsgDataRecord_TypeShape
orderinfo(0).LSS_WEBOHDR_WRK.CAPTURE_ID = New psService.CAPTURE_ID_TypeShape
orderinfo(0).LSS_WEBOHDR_WRK.CAPTURE_ID.Value = captureid

psreq.MsgData() = orderinfo

Dim response As New psService.LSS_WEBORDER_RESP_MSG_TypeShape
response = psclient.LSS_WEBORDER_OP(psreq)
response.ToString() <-- this throws an exception because "response" is nothing. 
psclient.Close()

Любая помощь будет оценена по достоинству.

Павел


person Paul Lemke    schedule 08.07.2010    source источник


Ответы (1)


Я понял это сегодня с небольшой помощью коллеги и некоторыми глубокими копаниями в Google.

По сути, пространство имен, которое имело Peoplesoft WSDL, было следующим: /Enterprise/Tools/schemas/LSS_WEBORDER_RESP_MSG.v1 Но после некоторого поиска я заметил, что пространство имен в ответе было другим: http://peoplesoft.com/LSS_WEBORDER_RESP_MSGResponse

Так что у меня есть два варианта. 1. Измените пространство имен в wsdl, прежде чем я создам свои прокси-классы. 2. Измените прокси-класс reference.vb, указав правильное пространство имен.

Я пока выбираю вариант 1. Я хотел бы, чтобы был лучший способ.

Мне здесь помогли: http://www.primordialcode.com/index.php/2008/10/15/invoking-javaaxis-web-service-net-return-null-issue/

person Paul Lemke    schedule 08.07.2010