我正在測試從.net客戶端應用程序調用基於SOAP的服務,並且正在運行SOAP標頭看起來消失的一些奇怪問題。Web服務調用期間刪除SOAP標頭
設置的簡要說明:我使用的Web服務提供者提供創建我的代理對象一個WSDL
。在我的代碼中,聲明瞭一個我想調用的服務客戶端實例。構建該方法所需的有效負載,然後調用該方法。
我已經定義了我自己的檢查器,它將請求消息寫入BeforeSendRequest函數中的文本文件,以便我可以檢查發送的內容。
我的輸出文件包括SOAP頭指定SOAP動作被稱爲:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">urn:actionName</Action>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
然而,當我在提琴手檢查請求我看到:
POST http://itk1:4848/syncsoap HTTP/1.1
Content-Type: text/xml; charset=utf-8
VsDebuggerCausalityData: uIDPo3+FD6fhly5OnM0GeeaNhJ8AAAAAqHE+abP1+EWcEPeRvh8Oj4EFi5tL0elHlKdqfGJg1AIACQAA
SOAPAction: "urn:actionName"
Host: itk1:4848
Content-Length: 9651
Expect: 100-continue
Connection: Keep-Alive
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body
我的行動似乎已經從SOAP信封中刪除,並已成爲一個基本的標題,所以當我打電話的服務獲取請求時,它無法在預期的位置找到該操作。
作爲一個測試,我試着用WebRequest.Create()創建一個基本請求,併發布之前從我的消息檢查器中檢索到的輸出文件。當這個命中Fiddler顯示SOAP Header和Action已被保留在SOAP信封中時。
我認爲這是WCF的幫助和修改我的請求?我怎樣才能讓它停止使用我的信息並按照原來的結構發送?
看起來你的SOAP頭正在轉換爲HTTP頭 – 2012-02-16 14:54:34
信封是如何創建的?通過代理類?代理類是如何創建的? – Jeff 2012-02-16 15:01:25
@傑夫信封來自代理。代理是從提供的WSDL創建的。這些課程用例如
2012-02-16 15:31:18