[英]WCF client in development mode and when publishing to users with different IP addresses
[英]WCF service issue when client has multilple IP addresses
我需要一些幫助來解決與IIS托管的WCF服務進行桌面客戶端通信時遇到的問題。
我想在測試用例中做的是:
問題:
在步驟2中,PC可能具有多個IP地址(以太網適配器,回送適配器等)。 如果在注冊呼叫期間,無法通過服務器從回調URL發送該列表中的IP(例如,回送適配器IP),則會拋出超時異常。 經過幾次這樣的嘗試后,服務器不再接受來自客戶端的呼叫(無論是有效IP還是其他)。 有時會引發“服務器太忙”異常。
(由於DNS / WINS配置問題導致服務器無法將計算機名稱解析為正確的IP地址,因此我無法在回調uri中使用計算機的標准名稱)。
繁殖方法:
一種。 在IIS上發布服務器。 從具有多個IP地址的另一台計算機上,執行客戶端。 客戶端拋出超時異常,並在3次嘗試b之后程序退出。 App.Config中的參數允許輸入正確的IP地址(要使用的IP)。 現在,如果啟動該程序,一切正常。
C。 如果我刪除了上面指定的該IP地址,以便使用了錯誤的IP,則會再次發生步驟a。 在此模式下,運行程序2-3次。
d。 按照步驟b進行更改,然后運行程序。 有時我會收到超時異常。 其他時間,該網站出現。 但是,輸入和發送文本時,它不會到達客戶端。 (即使Web服務未收到任何呼叫,注冊方法仍然有效。由於Web服務上沒有注冊的客戶端,因此發送功能失敗。
我不確定為什么會發生這種情況以及如何解決。 這是我的Visual Studio解決方案-http://bit.ly/atKfOS
高度贊賞任何投入,評論。 環境:服務器-Windows XP(IIS 5),Windows Server 2008 SP2 x64(IIS 7),客戶端:Windows XP
謝謝GC
好吧,我想主要的問題是:當服務器嘗試回呼客戶端並失敗時,兩者之間的通道將“出現故障”,並且變得無用。
發生此類事件后,您必須處置客戶端代理,然后重新創建它-或在服務器上優雅地處理超時異常(將其捕獲,將其轉換為SOAP錯誤,將其記錄-不管如何-只是不要讓未經過濾的.NET TimeoutException傳遞回客戶端,這將導致通道故障。
當發生此類TimeoutException時,您在服務器端做什么? 您確定不一直在通道中冒泡該異常嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.