2010-01-26 79 views
13

我對WCF(以及其他Web服務框架)中如何實現SOAPAction有點困惑。HTTP頭或SOAP頭中的WCF Soap操作?

在測試客戶端中,我配置了一個客戶端消息檢查器,用於抓取SOAP消息以及與請求一起發送的所有HTTP頭。至少在這裏的客戶端消息檢查,動作如在SOAP報頭中的元件示出了:

<s:Header> 
    <Action ... >http://myurl.com/2009/11/MyService/MyMethod</Action> 

但是,如果我查看Fiddler中請求,Action元素缺少,而是現在有一個附加的在HTTP頭的條目:

SOAPAction: "http://myurl.com/2009/11/MyService/MyMethod" 

任何人都可以解釋什麼是這樣?

謝謝!

回答

13

這是WCF未遵循標準的問題。

SOAP 1.1使用SOAPAction頭來決定調用什麼方法,但由於方法名嵌入在消息的其他地方,這有點麻煩。 SOAP 1.2解決了這個問題,並將操作添加到content-type頭部,並且不推薦使用SOAPAction頭部(儘管它現在對於那些仍然希望發送它的客戶端來說是可選的)。

有關詳細信息,請參閱o'reilly博客頁面。

3

對我來說似乎就好像這兩者是相同的,不是嗎?我想Fiddler只是解釋SOAP頭「」,稱它爲「SOAPAction」。價值似乎是相同的,不是?

從客戶端消息檢查器獲得的是通過銅線(或光纖)傳輸的原始XML數據(SOAP消息的原始格式)。我想說,Fiddler給你的是同一個XML消息的更高層面的HTTP解釋。

從我在Fiddler和SOAP上找到的其他博客文章和文章(例如this blog post - 查看結尾處的「Sample Capture」部分),似乎Fiddler將脫離SOAP標頭並以自定義格式解釋/顯示它們,只留下SOAP正文顯示爲正在顯示的消息正文。

是否存在實際的技術問題?或者只是一個如何解釋這兩種格式的問題?

+0

它們可能是等效的。這不是一個真正的技術問題,但是我的信息檢查員告訴我一件事情,但實際發佈的信息是不同的,這有點令人困惑。此外,服務提供商還確認Fiddler是對的,我的消息檢查員沒有給我真正的傳出請求。 我希望有人能解釋爲什麼會發生這種行爲。 – WayneC 2010-01-27 00:09:22

4

有機會,你看到SOAP 1.1和SOAP 1.2之間的區別。