2010-01-31 175 views
3

設置:Windows 7,IIS已安裝並正在運行。httplistener無法在端口80上工作?

下面一段代碼:

HttpListener listener = new HttpListener(); 
listener.Prefixes.Add("http://server.com:8080/path"); 
listener.Start(); 

工程等魅力 - 反對在我的代碼被接收服務器提出的任何要求。

然而,當我做如下改變(移動到端口80)HTTP.SYS/IIS(不知道哪個)返回HTTP 503錯誤:

listener.Prefixes.Add("http://server.com:80/path"); 

我試過設置URLACLs,運行這個進程作爲管理員等,但沒有改變這種行爲。

編輯:爲了清楚這一點 - 沒有實際的網絡涉及這混亂。所有這些都是在單臺機器上進行的,用於測試目的(服務器和客戶端)。

任何想法?

+0

你的防火牆呢? – 2010-01-31 08:13:39

+1

IIS不在此端口上偵聽嗎? – Dani 2010-01-31 08:16:19

+0

@Mitch,如果防火牆本來就是個問題,我不會收到503. @Dani,IIS也在這個端口上偵聽,http.sys允許多個進程在它們之間共享URL。這就是整個問題。 – Shachar 2010-01-31 08:22:32

回答

1

好吧,不知道爲什麼,我討厭這樣的答案,但是... 問題消失了。我可以驗證沒有任何代碼被更改,並且不是問題機器的瞬態狀態,因爲我在問題試用期間嘗試重新啓動它不止一次。

我不知道是什麼原因造成的。

+0

我有完全相同的問題。更換我使用的端口後,問題就消失了。 – Brad 2011-11-25 19:26:25

0

我在Windows Server 2008 R2計算機上觀察到了相同的結果。我最初在大多數示例使用的端口8080上開發了我的監聽器,然後切換到端口80.第一次運行端口80時,我得到了IIS啓動頁面(IIS角色未安裝在我的服務器上,可能是IE緩存問題)或空白頁面。我在處理程序中有斷點,並且可以看到要求通過併成功回覆的請求。重新編譯(clean)後,重新安裝我的服務並重新啓動IE,問題就沒有了。沒有代碼改變。

所以,如果你遇到這個問題,請嘗試重新編譯乾淨,重新安裝你的服務(或應用程序),然後重新啓動IE。