2013-04-13 77 views
0

我創建了2個WCF端點,服務端點駐留在桌面應用程序(IP地址爲10.8.20.175);客戶端端點位於Web託管的應用程序上。WCF端點部署錯誤

這是服務端點配置

<services> 
    <service behaviorConfiguration="NotificationServiceBehavior" 
    name="NotificationService"> 
    <endpoint address="" binding="netTcpBinding" contract="INotificationService" /> 
    <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="net.tcp://localhost:3337/NotificationService" /> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 

,這是客戶端的端點配置

<system.serviceModel> 
<client> 
    <endpoint address="net.tcp://10.8.20.175:3337/NotificationService" 
    binding="netTcpBinding" contract="INotificationService" 
    name="NetTcpBinding_INotificationService" /> 
</client> 
<bindings> 
    <netTcpBinding> 
    <binding sendTimeout="00:10:00" maxReceivedMessageSize="1000000" name="NetTcpBinding_INotificationService"/> 
    </netTcpBinding> 
</bindings> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 

通知,在端點地址,我把服務端點的實際IP地址。當我測試本地主機上服務端點和客戶端端點之間的通信時,該地址爲localhost:3337,通信良好。現在,當我部署端點時,出現以下錯誤:

套接字連接被中止。這可能是由於處理您的消息時出錯或遠程主機超出接收超時, 或底層網絡資源問題所致。本地套接字超時爲'00:10:00'。

System.Net.Sockets.SocketException:System上的System.Net.Sockets.Socket.Receive(Byte []緩衝區,Int32偏移量,Int32大小,SocketFlags socketFlags)上的遠程主機強制關閉了現有連接。 ServiceModel.Channels.SocketConnection.ReadCore(Byte []緩衝區,Int32偏移量,Int32大小,TimeSpan超時,布爾關閉)

日誌說明連接被遠程主機強制關閉,這意味着客戶端端點實際發送請求並且它到達了服務端點?我對此感到困惑。我不確定客戶端端點是否可以到達服務端點。

順便說一句,從客戶端端點機器上,我可以ping服務端點的機器,也可以在端口3337上telnet遠程機器。

回答

0

根據我的經驗,這表明您的服務已被客戶端觸發並激活。然而,在通話過程中發生了一些事件,導致服務中的回覆無效。

最好的方法來檢查將打開WCF tracing爲您的服務。這應該有助於您更好地瞭解服務器端發生的情況。

+0

我已經在服務端和客戶端都打開了WCF跟蹤。但是,我只在客戶端獲得日誌文件。我認爲的原因是因爲客戶端是在一個Web主機應用程序,但服務端在桌面應用程序。有誰知道如何打開桌面應用程序上的WCF跟蹤?謝謝! – user1897157

+0

在我的回答中爲鏈接選擇的答案應該有你需要的所有配置,都是app.config。無論您是運行Web還是桌面應用程序,配置都應該相同。您是否以無權訪問試圖寫入文件的用戶的身份執行桌面應用程序?編輯:你也可以在你的服務器上放一個像Wireshark或Netmon這樣的工具,以確認你的應用程序之間有喋喋不休。 – Brad