2010-02-17 33 views
1

我正在努力解決與名稱解析有關的WCF問題 - 或類似的問題。當我通過Web服務器上的Web應用程序在應用程序服務器上使用wcf服務(netTcpBinding)時,它不起作用。好吧,它在大多數情況下都不起作用。如果您使用本地主機或127.0.0.1從Web服務器本身訪問Web應用程序,則它可以工作。但是,通過其他客戶端機器通過Web服務器訪問它或使用主機名或IP地址在Web服務器上本地訪問Web應用程序不起作用。在這兩種情況下,您都會遇到套接字連接中止錯誤。NetTcpBinding具有遠程訪問和傳輸安全性的wcf服務?

更令人感興趣的是,將所有安全性切換爲「無」而非「傳輸」可以解決問題。

我的問題是,是否有可能使用您的Web服務器訪問wcf服務,仍然使用傳輸安全性?或者這是一個錯誤/設計的行爲?

非常感謝任何見解, 史蒂夫

回答

2
  1. 默認NetTcpBinding安全選項是Kerberos/Windows身份驗證。如果你的客戶和服務不在同一個域中,它將不起作用。您可能需要查看基於證書的身份驗證。

  2. 如果您的服務在域帳戶下運行,請嘗試將其更改爲LocalService或NetworkService以查看是否可以解決問題。

1

交通運輸安全通常只能點至點 - 當客戶端直接連接到服務器。

如果您有來自互聯網的客戶,您無法控制他們經過多少中間跳躍 - 因此,即使運行安全性,運輸安全性很可能根本不起作用,例如,您的消息可能會受到保護,無法從客戶端跳到第一跳,從最後一跳跳到您的服務器 - 但不在跳數之間。

對於互聯網場景,通常,傳輸安全性不是有效選項 - 對這些情況使用消息安全性。

我不是100%確定爲什麼連接根本無法工作 - 但無論如何,如果您不在公司防火牆後面,我不會在這種情況下使用netTcp和傳輸安全性。

請問您可以將您的服務器端配置(<system.serviceModel>中的任何內容)添加到您的問題中,以瞭解如何設置傳輸安全性?

+0

Mi Marc感謝您的幫助。這是有道理的,但我會認爲從技術角度來說,保護web服務器和wcf之間的通信應該是可以的 - 因爲我無論如何都控制每一跳(作爲多層應用程序的一部分)。當我再次訪問時,我會盡快發佈一些代碼/標記。 – MrCraze 2010-02-17 12:13:01