簡體   English   中英

在VS2010中使用帶有IIS Express的端口80

[英]Using port 80 with IIS Express inside of VS2010

我有一個應用程序,我試圖在VS2010的IIS Express下我的開發系統上運行,我需要使用端口80,但我無法讓它工作。 我正在查找有關端口80被保留的信息。 http://learn.iis.net/page.aspx/1005/handling-url-binding-failures-in-iis-express/

但即便這樣做,我仍然從vs2010那里得到一個錯誤,上面寫着“無法啟動IIS Express Web服務器。端口'80'正在使用中。”

我不知道還有什么可以嘗試的。 我使用Process Hacker來跟蹤端口80,它似乎被進程ID 4運行的System使用,這是NT內核和系統進程。 我不知道這是否會阻止我使用該端口。 我想也許這是因為http.sys持有該端口所以沒有別的可以使用它?

通過修改C:\\Users\\[MyUser]\\Documents\\IISExpress\\config\\applicationhost.config文件的默認綁定,我設法讓IIS Express在端口80上運行,雖然我可以通過這種方式手動啟動IIS Express, VS然后出現錯誤,因為該端口上已存在綁定。 所以我將其更改回8080,使用VS2010中的按鈕創建虛擬目錄(我猜測它與輸入網站綁定相同)但是當我去調試應用程序時仍然會出錯。 在VS2010中是否有硬編碼的東西不允許它在端口80上啟動IIS Express?

更新和修復:好的,所以我發現了一些要檢查的東西,我確實解決了我的問題,但並不完全。 一篇文章建議確保我沒有安裝SQL報告服務,因為它可以在端口80上監視,我曾經安裝它但不再安裝它並不是我遇到的問題。 但我確實意識到我安裝了WebDeploy。 它與Web Platform Installer中的VS2010 SP1捆綁包捆綁在一起。 這很好,因為我確實需要來自WebDeploy的客戶端工具,但它也在我的系統上安裝了代理程序,該代理程序正在端口80上進行監視。我轉到了我的服務列表並停止了Web Deploy Agent Service 在我這樣做的時候,我現在可以在VS2010中使用端口80用於IIS Express。

與在IIS Express中運行端口80相關的新問題然而我的應用程序是一個MVC3應用程序,我遇到了一個問題,因為MVC3根本沒有捕獲我的請求,所以它沒有觸發我的控制器動作或類似的東西,但我的應用程序的根目錄中的txt文件可以到達所以我知道它是我的網站,IIS Express正在提供。 任何人都有任何問題在端口80上的IIS Express中運行MVC3(我不知道它是否獨占於MVC3)?

只是為這個問題發布我自己的答案,所以我可以將問題標記為已回答。 檢查http://learn.iis.net/page.aspx/1005/handling-url-binding-failures-in-iis-express/如果已安裝Web Deploy Agent服務,請將其禁用。

在我的情況下,我通過停止“SQL Server Reporting Services”解決了這個問題

你可以找到它

控制面板 - >服務

非常感謝您發現'Web Deploy Agent'服務! 這是最近剛剛開啟的東西,因為我已經完成了所有這些工作,並且今天安裝了IIS Express的更新版本,並遇到了與端口80完全相同的問題。所以現在我已經關閉了Web Deploy代理,我的系統再次正常工作。

至於ASP.NET MVC3,它在端口80和端口443上對我很有用。綁定這兩個端口是相當多的工作,以便IIS Express能夠將它們用作普通用戶(大多數來自您在上面發布的鏈接),並安裝我們使用的SSL證書。 我手動創建了applicationhost.config文件中的所有條目以使其正常工作,相應的站點部分如下:

    <sites>
        <site name="PHP: A Main" id="2144116512">
            <application path="/">
                <virtualDirectory path="/" physicalPath="C:\var\www\amain\www" />
                <virtualDirectory path="/images" physicalPath="C:\var\www\images" />
            </application>
            <application path="/admin">
                <virtualDirectory path="/" physicalPath="C:\var\www\amain\www\admin" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:80:test.amainhobbies.com" />
                <binding protocol="https" bindingInformation="*:443:test.amainhobbies.com" />
            </bindings>
        </site>
        <siteDefaults>
            <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
            <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
        </siteDefaults>
        <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
        <virtualDirectoryDefaults allowSubDirConfig="true" />
    </sites>

請注意,我的站點是一個組合的PHP和ASP.NET MVC3站點,因為我們正在重寫整個東西以在ASP.NET MVC3上運行,因此大多數站點仍然是PHP但很多新東西是現在運行ASP.NET MVC3,這些東西適合我。

您的IIS Express是否在Visual Studio之外與MVC3一起正常工作,或者MVC3的東西根本不起作用?

我沒有安裝Web Deploy Agent但遇到了這個問題。 您還可以通過運行此命令來確定使用該端口的哪個應用程序或服務,然后在任務管理器中對其進行跟蹤來解決此問題。

netstat -o -n -a | findstr 0.0:80

然后打開任務管理器,轉到進程,單擊“為所有用戶顯示進程”復選框,然后單擊“查看”菜單並轉到“列”,添加PID列。

將netstat命令中的進程ID與任務管理器中的PID進行匹配,您將找到使用該端口的服務或應用程序。

那個解決方案幫了我

在Windows 7或Windows Vista上,從提升的命令提示符處運行以下命令:console

netsh http add urlacl url=http://localhost:80/ user=everyone

此命令將允許任何用戶的應用程序(包括您自己的IIS Express實例)使用端口80運行,而無需管理權限。 要限制對自己的訪問權限,請將“everyone”替換為您的Windows身份。

取自該來源 - > https://docs.microsoft.com/en-us/iis/extensions/using-iis-express/handling-url-binding-failures-in-iis-express

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM