2011-12-28 124 views
1

我的問題是類似SOAP請求客戶端web服務用vb.net

How do I send/Receive SOAP messages usiung .NET

我想調用Web服務,但不喜歡的鏈接顯示above.What我所做的就是,創建方式與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,這是我的手術公共職能

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」。該服務未被調用。我不知道如何從應用程序配置文件中獲取跟蹤文件,以調試問題。我記得,當我第一次使用它時,出現了一個錯誤「沒有可以接受消息的端點監聽」,但現在沒有錯誤。

我在應用程序配置文件中添加了以下內容以獲取跟蹤信息,以瞭解發生了什麼。但沒有看到任何生成的跟蹤文件(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,響應是好的,我填充請求字段。

如何啓用跟蹤以查看請求將要發送的內容以及問題的位置。

回答

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> 
+0

起初,我得到了一個錯誤「了。在序列化消息getTransactionDetailsRequest的身體一個錯誤:‘有一個錯誤生成XML文檔。’請參閱的InnerException更多細節 - 。 - > System.InvalidOperationException:生成XML文檔時發生錯誤---> System.ServiceModel.Diagnostics.PlainXmlWriter + MaxSizeExceededException「。當我改變大小時,錯誤消失。但是,無法看到生成的任何日誌。 – Suresh 2011-12-28 12:17:26

+0

忽略我上面的評論。 – Suresh 2011-12-29 09:28:31

+0

我以前遇到的問題是響應不符合wsdl。這個,我使用soapui工具中的驗證響應選項進行檢查。有沒有什麼辦法可以在.net客戶端中生成與此相關的日誌?除了響應對象爲空,即使我能在跟蹤日誌中看到響應xml,我的.net客戶端中也沒有例外。 – Suresh 2011-12-29 15:57:56