使用vb.net向Web服务发送soap请求客户端

使用vb.net向Web服务发送soap请求客户端,vb.net,wcf,web-services,soap-client,Vb.net,Wcf,Web Services,Soap Client,我的问题类似于 我想调用一个Web服务,但不像上面的链接所示,我所做的是用wsdl url创建一个服务引用(在一个有按钮点击事件的windows应用程序中) 已创建客户端对象 Dim objProxy As MyClient = New MyClient() 我使用以下方法填充了objrequest和objreqheader(分配字符串值而不是xml) 最后,下面的行调用服务 objresponsehead = objProxy.myoperation(objreqheader, objre

我的问题类似于

我想调用一个Web服务,但不像上面的链接所示,我所做的是用wsdl url创建一个服务引用(在一个有按钮点击事件的windows应用程序中)

已创建客户端对象

Dim objProxy As MyClient = New MyClient()
我使用以下方法填充了objrequest和objreqheader(分配字符串值而不是xml)

最后,下面的行调用服务

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
公共函数myoperation(ByVal RequestHeader作为AFA.RequestHeaderType,ByVal GetTransactionDetailsReq作为AFA.GetTransactionDetailsReqType,ByRef GetTransactionDetailsResp作为AFA.GetTransactionDetailsRespType)作为AFA.ResponseHeaderType
Dim inValue As AFA.getTransactionDetailsRequest=新建AFA.getTransactionDetailsRequest()
inValue.RequestHeader=RequestHeader
inValue.GetTransactionDetailsReq=GetTransactionDetailsReq
Dim retVal为AFA.getTransactionDetailsResponse=CType(Me,AFA.myservice)。getTransactionDetails(无效)
GetTransactionDetailsResp=retVal.GetTransactionDetailsResp
返回retVal.ResponseHeader
端函数
问题是我的objresp是空的。没有生成异常,objresponsehead填充为“abcd”。未调用该服务。我不知道如何从app config文件中获取跟踪文件来调试问题。我记得,当我第一次使用它时,得到了一个错误“没有端点侦听可以接受消息”,但是现在没有错误

我在app-config文件中添加了以下内容,以获取跟踪以查看发生了什么。但未看到生成的任何跟踪文件(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中,在我填充请求字段之后,响应很好

如何启用跟踪以查看请求的内容和问题所在。

请参阅:



最初我遇到了一个错误序列化消息getTransactionDetailsRequest的正文时出错:“生成XML文档时出错。”。有关更多详细信息,请参阅InnerException。-->System.InvalidOperationException:生成XML文档时出错。-->System.ServiceModel.Diagnostics.PlainXmlWriter+MaxSizeExceedeException“。当我更改大小时,出现错误。”。但是,无法看到生成的任何日志。我之前遇到的问题是响应不符合wsdl。对此,我使用soapui工具中的validate response选项进行了检查。有没有办法在.net客户端中生成与此相关的日志?在我的.net客户端中没有异常,除了响应对象为空,即使我可以在跟踪日志中看到响应xml。我不确定是否有可以打开的开关。请就这个问题单独提问,你可能会得到答案。
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
<system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add type="System.Diagnostics.TextWriterTraceListener" name="TextWriter"              initializeData="trace.log" />
      </listeners>
    </trace>
  </system.diagnostics>
<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>