我的问题类似于
How do I send/Receive SOAP messages usiung .NET
我想调用一个web服务,但不像上面链接中显示的那样。我做的是,用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
问题是我的objresp是空的。没有生成异常,objresponsehead填充为“abcd”。该服务未被调用。我不知道如何从应用配置文件中获取跟踪文件,以调试问题。我记得,当我第一次使用它时,得到一个错误“没有可以接受消息的端点侦听”,但是现在没有错误。
我在app配置文件中添加了以下内容以获取跟踪以查看发生了什么。但没有看到生成的任何跟踪文件(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开始,在填充请求字段后,响应很好。
如何启用跟踪以查看请求的内容以及问题所在。
答案 0 :(得分:2)
请参阅Message Logging:
<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>