клиент запрос мыла к веб-сервису используя vb.net - PullRequest
1 голос
/ 28 декабря 2011

Мой вопрос похож на

Как отправлять / получать SOAP-сообщения, используя .NET

Я хотел вызвать веб-сервис, но не так, как показано в приведенной выше ссылке. То, что я сделал, создал ссылку на сервис с помощью wsdl url (в приложении Windows с событием нажатия кнопки)

http://ipaddress:port/My/MyService?wsdl

создали объект клиента

Dim objProxy As MyClient = New MyClient()

Я заполнил objrequest и objreqheader, используя приведенные ниже методы (назначение строковых значений, а не xml)

objreqheader.id = "abcd"

Наконец, следующая строка вызывает сервис

objresponsehead = objProxy.myoperation(objreqheader, objrequest, objresp)

Из ссылки vb это публичная функция myoperation

Public Function myoperation(ByVal RequestHeader As AFA.RequestHeaderType, ByVal GetTransactionDetailsReq As AFA.GetTransactionDetailsReqType, <System.Runtime.InteropServices.OutAttribute()> ByRef GetTransactionDetailsResp As AFA.GetTransactionDetailsRespType) As AFA.ResponseHeaderType
            Dim inValue As AFA.getTransactionDetailsRequest = New AFA.getTransactionDetailsRequest()
            inValue.RequestHeader = RequestHeader
            inValue.GetTransactionDetailsReq = GetTransactionDetailsReq
            Dim retVal As AFA.getTransactionDetailsResponse = CType(Me,AFA.myservice).getTransactionDetails(inValue)
            GetTransactionDetailsResp = retVal.GetTransactionDetailsResp
            Return retVal.ResponseHeader
        End Function

Проблема в том, что мой объект пуст. Нет сгенерированного исключения, objresponsehead заполняется как "abcd". Служба не вызывается. Я не уверен, как получить файл трассировки из файла конфигурации приложения, чтобы отладить проблему. Я помню, когда я использовал это в первый раз, я получил сообщение об ошибке «Нет прослушивания конечной точки, которая может принять сообщение», однако сейчас ошибки нет.

Я добавил ниже в файл конфигурации приложения, чтобы получить трассировку, чтобы увидеть, что происходит. Но не увидел ни одного сгенерированного файла трассировки (trace.log).

<system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add type="System.Diagnostics.TextWriterTraceListener" name="TextWriter"              initializeData="trace.log" />
      </listeners>
    </trace>
  </system.diagnostics>

Я проверил свойство objProxy, в качестве свойства которого используется базовая привязка http. Кто-нибудь вызывал сервис как этот? От soapui ответ хороший, после того как я заполнил поля запроса.

Как включить трассировку, чтобы увидеть, что происходит с запросом и в чем проблема.

1 Ответ

2 голосов
/ 28 декабря 2011

См. Регистрация сообщений :

<system.diagnostics>
  <sources>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
                 <add name="messages"
                 type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="c:\logs\messages.svclog" />
          </listeners>
      </source>
    </sources>
</system.diagnostics>

<system.serviceModel>
  <diagnostics>
    <messageLogging 
         logEntireMessage="true" 
         logMalformedMessages="false"
         logMessagesAtServiceLevel="true" 
         logMessagesAtTransportLevel="false"
         maxMessagesToLog="3000"
         maxSizeOfMessageToLog="2000"/>
  </diagnostics>
</system.serviceModel>
...