2012-06-19 37 views
3

你好罰款Stackoverflow的用戶!IIS Express無法啓動本地主機與ipv6

這裏有一件有趣的事情發生在我身上 - 也許你可以解釋爲什麼?

昨天我工作日的一半時間,我的IIS Express安裝停止工作。

起初我以爲這是我正在研究的ASP.NET項目的一個問題,只是掛起而無法啓動,因爲頁面一直持續到它超時。然後我嘗試了一些其他項目,也設置爲在localhost:8080上運行 - 並且它們也不會加載 - 即使是純HTML的。

現在,當我說他們不會加載;我的意思是沒有任何活動。該頁面會在Chrome中「加載」很久,並且IISExpress控制檯不會註冊任何GET請求,直到最終在Chrome中的標籤將顯示超時錯誤。

今天上午,我(有一些幫助)想通一些東西 - 因爲某些原因,當我ping通localhost IPv6地址::1:將返回,而不是IPv4地址127.0.0.1 - 我以前沒有注意到這個問題,我的天堂」沒有改變任何網絡設置。

我編輯了我的HOST文件,幷包含一個條目127.0.0.1 localhost強制ping localhost返回ipv4地址。這工作,當我再次嘗試IIS Express綁定到本地主機:8080它也工作。

我的問題是; 什麼在地球上?!?!

我不知道爲什麼會發生這種情況。我知道我已經設法通過編輯我的HOST文件來解決個人問題,但是有誰知道爲什麼地球上會發生這種情況?

任何想法爲什麼ping localhost會突然開始返回ipv6地址?而任何想法爲什麼IIS Express不能用於ipv6? (我認爲IIS引擎現在已經有了)。

我想了解發生了什麼事以避免任何進一步的問題,併爲了好奇心。

預先感謝任何信息,

菲爾

回答

0

只要是IPv6的系統上啓用,:: 1和127.0.0.0是「localhost」的兩個有效地址。哪一個由系統返回並用於例如ping或多或少不具有確定性,除非程序明確要求使用IPv4或IPv6地址 - 而且由於Windows的ping可以處理,所以它可能不會這樣做。

對於IIS,像這樣的答案表明這種行爲是故意的,你需要啓用綁定到單獨的IPv6地址:https://serverfault.com/questions/123796/get-iis-7-5-to-listen-on-ipv6

3
  • 打開一個管理員cmd窗口,然後用口執行這個你'綁定到:netsh http add urlacl url="http://[::1]:8080/" user=everyone。這告訴你的系統,它的酷綁定到::1
  • 打開%USERPROFILE%\Documents\IISExpress\config\applicationhost.config,找到你的網站的部分,並添加IPv6的結合:<binding protocol="http" bindingInformation="[::1]:8080:*" />

樣品:

<site name="WebSite1" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\ryan.versaw\Documents\WebSite1" /> </application> <bindings> <binding protocol="http" bindingInformation="*:8080:localhost" /> <binding protocol="http" bindingInformation="[::1]:8080:*" /> </bindings> </site>