我創建了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遠程機器。
我已經在服務端和客戶端都打開了WCF跟蹤。但是,我只在客戶端獲得日誌文件。我認爲的原因是因爲客戶端是在一個Web主機應用程序,但服務端在桌面應用程序。有誰知道如何打開桌面應用程序上的WCF跟蹤?謝謝! – user1897157
在我的回答中爲鏈接選擇的答案應該有你需要的所有配置,都是app.config。無論您是運行Web還是桌面應用程序,配置都應該相同。您是否以無權訪問試圖寫入文件的用戶的身份執行桌面應用程序?編輯:你也可以在你的服務器上放一個像Wireshark或Netmon這樣的工具,以確認你的應用程序之間有喋喋不休。 – Brad