2010-06-02 80 views
2

我有一個WCF服務在Windows Server 2008 RC2 IIS 7上運行,沒有防火牆。當我試圖用NetTcpBinding的結合來調用它,我得到這個異常:使用netTcpBinding與WCF服務通信時出現問題

System.TimeoutException:開放 操作沒有的00:00:30的 分配的超時時間內完成。分配給此操作的時間 可能有 是較長超時的一部分。 ---> System.TimeoutException:套接字傳輸超時後 00:00:30。您已超出綁定中設置的 超時。分配給此操作的時間 可能有 是較長超時的一部分。 ---> System.Net.Sockets.SocketException:一個 連接嘗試失敗,因爲 連接方在一段時間後沒有正確響應 ,或 建立的連接失敗,因爲 連接的主機未能響應時
System.Net.Sockets.Socket.Receive(字節[] 緩衝器,的Int32偏移的Int32大小, 的SocketFlags的SocketFlags)在 System.ServiceModel.Channels.SocketConnection.ReadCore(字節[] 緩衝器,的Int32偏移量,大小的Int32 , TimeSpan超時,布爾關閉)...

我調用的方法只返回一個數值,沒有別的,所以問題不在超時。如果我使用wsHttpBinding - 它沒有問題。另外我還將日誌記錄添加到我調用的方法中,所以我知道它甚至沒有執行。

我做了所有步驟,從here配置IIS。問題是:

  1. 有人知道問題可能是什麼?
  2. 如何解決/調試此 問題?

回答

1

我對這個誤導性的錯誤信息感到沮喪。如果我沒有錯,你會在第一秒內得到這個TimeoutException。我可以向你保證你的問題涉及到安全或序列化問題。我把這個問題帶給了微軟的WCF產品組,他們似乎很驚訝,但沒有聽到任何迴應。

第一個建議是查看NetTcpBinding安全設置。確保客戶端和服務的首要安全設置相同(例如不是消息加密或傳輸層安全性)。如果您可以在沒有安全措施的情況下運行,請逐步增加安全設置。

第二個建議某些序列化問題可能會導致服務崩潰:空的可空字段,與操作混合的重載方法,不明確的合同名稱,無效的轉換。要調試,請在服務的配置設置中設置跟蹤。您可以通過WCF服務配置實用程序(SvcConfigEditor.exe)輕鬆完成此操作。運行您的服務獲取異常,停止它並使用WCF服務跟蹤查看器工具打開生成的跟蹤日誌。這兩種工具都帶有.NET(不是Visual Studio),可以在Program Files/Windows SDKs文件夾中找到。