2013-07-25 127 views
3

我正在使用的一個程序有一個內置的網絡服務器,意在處理非常具體的請求(靜態)。與TcpListener不同,當HttpListener啓動時,用戶不會被提示允許程序被允許監聽哪些網絡。這是一個很大的問題,因爲程序需要監聽遠程連接,而這些連接現在正被Windows防火牆拒絕。C#HttpListener和Windows防火牆

如果我在Windows防火牆中制定新規則,並在「程序和服務」下選擇我的程序,Windows仍然會拒絕所有遠程連接...但是如果我選擇「符合指定條件的所有程序」,那麼它工作得很好。我的問題是爲什麼?爲什麼防火牆在特定選擇時拒絕我的應用程序?以及用戶如何不像其他監聽器那樣得到防火牆安全屏幕的提示?

+0

您是否在該配置中添加了正確的(調試/版本)版本。不知道這是否有所作爲,但它可能是基於位置的。 – ChrisBint

+0

我正在使用已安裝的發行版本(與部署項目安裝程序一起安裝) – Wilson212

+0

您是否試圖直接打開端口? –

回答

9

這是因爲HttpListener建立在http.sys之上,它會監聽您代表程序指定的端口。

我還沒有找到一種方法,通過Windows防火牆使用HttpListener只允許一個程序,但你可能想只限制入站規則系統組件:

  • 輸入打字系統在現場「這個計劃」在該選項卡的「程序和服務」
  • 選擇協議類型TCP在選項卡「協議和端口」連同端口,你會在
被監聽
+2

適合我。你怎麼知道程序的名字應該是「系統」? – Grezzo

+0

我也很想知道;) – burtonium76