2011-03-23 19 views
0

我在PC上創建了一個名爲PC1的WCF服務器。我使用來自另一臺名爲PC2的PC的Internet Explorer訪問URI http://PC1:8000/ServiceModelSamples/Service爲什麼WCF通信是一個tcp,即使我在URI中說http?

當我在Wireshark中調試消息時,我很困惑,爲什麼沒有HTTP消息,即使我在我的URI中指定「http://」。它只顯示TCP協議,沒有HTTP消息或頭。

請指教

+1

如果您只想查看HTTP消息的內容,Fiddler可能比Wireshark更易於使用:http://fiddler2.com – 2011-03-23 17:12:12

回答

4

對於wireshark,任何瀏覽器請求只是另一個TCP連接。就顯示HTTP協議細節而言,可能會猜測特定端口(80)上的流量將是http。由於您使用的是非標準的http端口,因此可能無法這樣做。

要確認這一點,請嘗試加載一些其他網站/網頁(例如www.google.com)並查看它是否能夠向您顯示http詳細信息。如果可行,那麼接下來的事情就是嘗試找到一些設置/配置,通過這些設置/配置,你可以告訴wireshark它應該將來自另一個端口(您的情況爲8000)的流量視爲http流量。

編輯

this question爲導向,以用於HTTP端口配置Wireshark的。

1

當您使用瀏覽器訪問服務時,「友好」服務響應爲您的瀏覽器生成Web表單。如果您在瀏覽器中收到網頁,則其 HTTP。這不是「SOAP」規範的一部分,但它是支持HTTP的MS WCF棧的一部分。

然後,如果填寫完畢,您可能正在發佈或獲取表單,但POST是默認設置。這也是HTTP。 WCF中經常禁用GET。

然後,您在瀏覽器中找回XMLish的東西,這也是通過HTTP獲取的。

所以你可能會錯過wireshark中的HTTP協議解碼。

編輯:我沒有看到您的網址包括:8000。 Wireshark將不會將其解碼爲HTTP,除非您強制它,因爲它不在HTTP端口上。你可以右鍵單擊一個8000端口的數據包,然後說「關注對話」,你會看到所有的http善良。您還可以強制wireshark將該流解碼爲HTTP,這將允許您「穿透」TCP層的數據包。

相關問題