2010-06-09 137 views
11

我有一個使用HttpBinding的WCF服務。該服務正在自託管過程(A Windows服務)中運行,並且此過程位於Windows防火牆例外列表中。Windows防火牆阻止WCF服務

如果防火牆處於活動狀態,並且我嘗試使用C#客戶端或Internet Explorer訪問該服務,則該服務不會響應。但是,如果防火牆被禁用,連接就像一個魅力。

有沒有人有過期與WCF和Windows防火牆?這個問題出現在Windows 7 64bit上。我沒有嘗試另一個操作系統。

我該怎麼做才能使這個工作與主動防火牆?

問候邁克爾

編輯: 我發現了一個線索,即HTTP.SYS已被添加到防火牆例外列表,WCF自主機使用HTTP.SYS。任何建議,如何解決這個問題?

編輯: 我試着手動打開所有的偵聽端口,這也起作用,但不是一個選項,因爲我不提前知道它們。

+0

嘗試打開服務使用的端口?即端口80,8080或任何你已經配置。因爲它使用普通的http我看不到問題:( – KTrum 2010-06-10 07:04:43

+0

我剛剛嘗試過,它的工作原理,但爲了提供一個簡單的用戶體驗,這不是一個生產環境中的選項(看起來端口已更改...) – 2010-06-10 07:26:23

+0

聽起來有點奇怪,端口會改變嗎?你使用IIS來發布服務嗎?我想你將不得不做一個例程來檢查服務現在使用哪個端口,並在防火牆中以編程方式打開該端口,如果這是甚至可能如果端口在防火牆中關閉,您可能無法訪問該服務 – KTrum 2010-06-10 07:41:44

回答

5

請嘗試MSDN的文章Configuring HTTP and HTTPS

+2

最後...我不確定這是否是內容的意圖您的答案,但文章指出:「WCF的自託管HTTP尋址沒有集成到Windows個人防火牆中。必須在防火牆配置中添加一個例外,以允許使用特定URL的入站連接。「我認爲'例外'是一種端口例外(不是過程),至少這是我的經驗。 – 2010-11-30 08:27:39

4

據我所知,增加自助託管WCF服務過程中的防火牆不起作用,因爲它不是過程採取呼入呼叫,它只能如果

  1. 附加服務端口全球端口例外
  2. 添加WCF入站守護進程來處理異常,我不確定有關http,但對於net.tcp綁定,您需要$ FrameworkDir/SMSvcHost.exe而不是您的進程。