開發環境:windows8.1+VS2013node
使用VS2013有一段時間了,因前期都是編寫C/S程序,沒有使用到B/S調試器。前幾日,建立了一個MVC項目,忽然發現VS2013沒法調試,報了這樣的錯。程序員
一會兒有點蒙,why?web
修改項目屬性的Web項,以下。express
F5運行,仍然出錯。windows
這時候我知道了是Web調試器沒有啓動,可是卻不明白爲何。因而檢查IIS8.5的安裝狀況,把一些可能須要安裝的都給裝了。安全
F5運行,問題依舊。服務器
問題焦點已經很清楚了,就是IIS Express未能啓動。因而想到查看事件,看有沒有記錄更具體的日誌。網絡
相關的事件有三條,前兩條相同,分別以下。asp.net
怎麼和iisnode有關係,咱們知道,iisnode是集成在IIS中用於託管node.js應用程序來取代自託管node.exe進程的一個模塊。編輯器
「C:\Program Files (x86)\iisnode-dev\release\x86\iisnode.dll」根本就不存在,這下更加暈了。爲何IIS Express會啓動失敗仍是不清楚。
我決定要完全搞清楚IIS Express究竟是什麼東西。
===============================華麗分割線==============================
當前程序員只能經過下面兩種Web服務器之一來開發和測試ASP.NET網站程序:
1. Visual Studio自帶的ASP.NET開發服務器(webdev.exe)。
2. Windows自帶的IIS Web服務器。
上面兩個方案各有優缺點,並且不少ASP.NET程序員告訴咱們:「我但願有一個像ASP.NET開發服務器那樣容易使用,可是功能又跟IIS同樣強大的服務器」。今天我很高興地宣佈,咱們將提供另外一個新的、免費的、綜合了前兩個方案的優勢的選擇—IIS Express,它的出現使得開發和運行ASP.NET網站程序變得更爲容易。
IIS Express支持VS 2010和Visual Web Develop 2010 Express,能夠運行在Windows XP和更高的版本上,它不須要管理員權限便可運行,也不要求代碼作任何的改動。你能夠用它開發全部類型的ASP.NET程序,並且它還支持完整的IIS 7.x功能集。
現有方案
在詳細介紹IIS Express以前,咱們先來看看ASP.NET開發服務器和IIS的工做方式。
ASP.NET開發服務器
Visual Studio自帶的ASP.NET開發服務器(開發代號「Cassini」)的優點在於簡練和便於快速啓動。它不須要監聽遠程鏈接請求(所以在大部分企業的安全網絡環境中均可以使用它),你甚至都不須要使用管理員帳號就能啓動它,並且它也不要求額外的安裝步驟。
正是由於具有啓動方便這一巨大優點,才使得它成爲ASP.NET項目的默認服務器,當你在Visual Studio中按下F5時就會啓動它。
但ASP.NET開發服務器的缺點是它不提供完整的Web服務器功能。好比說,它不支持SSL,URL重寫規則,自定義安全設置,和其它在IIS 7中支持的功能。
IIS Web服務器
用Visual Studio運行和測試程序還有第二個選擇— IIS。你能夠經過右鍵單擊Visual studio中的Web項目,打開它的屬性(在屬性窗口中單擊「Web」標籤)來配置Web工程使用IIS。
使用IIS做爲你的開發服務器容許你測試完整的Web服務器具有的功能(SSL,URL重寫規則等)。IIS是一個貨真價實的Web服務器—這意味着和在做業服務器上部署差很少開發環境。
可是採用IIS的缺點是,有些公司並不容許在開發機上安裝完整的Web服務器。IIS還要求使用管理員賬號來安裝和調試網站。不一樣版本的Windows又支持不一樣版本的IIS。例如,在Windows XP上,你只能使用自帶的IIS 5.1—全部IIS 7.x的新功能它都不支持。另外,在VS裏配置網站項目使用IIS,還得一些額外的安裝和配置步驟。
IIS Express — 「魚」和「熊掌」兼得
IIS Express綜合了ASP.NET開發服務器易用性的優點和IIS強大的功能。確切地說:
IIS Express(跟ASP.NET開發服務器同樣)能夠快速地從硬盤上的某個文件夾上啓動網站程序。它不須要任何註冊或配置步驟。在網站開發過程當中,這個特性使啓動和運行網站顯得至關便捷。
與VS的整合
Visual Studio 2010的SP1引入了IIS Express支持。你將能夠配置VS 2010使用它取代ASP.NET開發服務器做爲ASP.NET項目默認的Web服務器。跟如今的ASP.NET開發服務器同樣,你不須要在IIS Express裏註冊站點或者虛擬目錄。它支持和ASP.NET開發服務器相同的使用方法——只是添加了更多的功能而已。
當你按下F5來運行ASP.NET項目時,Visual Studio自動啓動IIS Express而且使用它來運行和調試網站程序(不須要額外的配置)。跟ASP.NET開發服務器同樣,IIS Express運行時,會在任務欄的通知區域顯示一個小圖標:
右鍵單擊上面的圖標並選擇「退出」就能夠快速關閉IIS Express。你也能夠經過右鍵單擊來列出正在運行的站點列表,還有站點的文件夾路徑以及使用的.NET版本:
[備註:上圖IIS Express爲英文版]
請注意上圖中兩個很酷的地方:
1. 正在運行的站點「Test Site」,還有IIS Express自己,保存在硬盤的c:\users\[用戶名]文件夾中。這就容許非管理員用戶使用IIS Express和網站,並且還支持一些如今的IIS服務器沒有辦法實現的場景(例如能夠在受限的企業網絡環境或受限的學校公共電腦上運行IIS Express)。
2. 上面正在運行的站點「Test Site」同時支持HTTP和HTTPS的訪問方式。IIS Express經過自動安裝「自簽名證書」來支持URL訪問控制列表(URL ACL)和SSL認證,這樣程序員(以非管理員用戶登陸電腦)能夠在不須要提高用戶權限,或執行額外設置的狀況下就可使用SSL。這個功能容許你在程序中爲SSL設置須要保護的頁面(好比登陸頁面),而且在開發過程當中象在真實的web服務器裏那樣運行和測試這些頁面。
IIS 7.x功能集
IIS Express就像你如今已經熟悉的ASP.NET開發服務其那樣容易啓動和使用。 可是由於IIS Express是基於與IIS 7x相同的代碼,你能夠用到完整Web服務器的功能集合。這也就意味着你能夠像在真實的做業Web服務器上建立和運行你的程序。除了SSL,你還可使用 IIS 7.x的URL重寫模塊、多媒體插件、動態內容壓縮、高級日誌功能、自定義安全策略和其餘豐富多彩的模塊。
除了支持ASP.NET之外,IIS Express還支持傳統的ASP和其餘被IIS支持的文件類型—這也使得它成爲整合多種技術的站點的理想平臺。
總結
IIS Express使得開發、運行和測試Web程序更加容易。它支持ASP.NET的全部版本和全部應用程序類型(包括ASP.NET Web窗體程序和ASP.NET MVC程序)。最好不過的是—你不須要改動任何代碼來使用它。你將能夠在全部已有的項目中選用它。
針對VS2010發佈SP1補丁程序,這個補丁程序將用IIS Express替換掉原來內置的ASP.NET開發服務器。後續版本的Visual Studio都內置了IIS Express。
======================================華麗分割線====================================
既然VS2013都內置了IIS Express8.0,爲何又會出現啓動失敗的狀況呢
在IIS Express的下載頁面彷佛找到了答案,
看到WebMatrix沒,之前用過它的2.0版,它的任務欄圖標和IISExpress是相同的呢,莫非要安裝它。
安裝WebMatrix3.0後,打開項目,F5啓動,問題解決!
============================================= 2014-6-26 更新 ==================================
在此感謝@斷紅深處的回覆,終於找到緣由了。
首先,咱們以前調試報錯是由於註冊表中缺乏這一項「Use64BitIISExpress」,安裝WebMatrix3.0會在註冊表中默認寫入這一項。不論是調試32位仍是64位,
這一項對於啓動IIS Express來講是關鍵。下面咱們來討論一下怎麼調試64位的Web程序。
以下,把目標平臺設置爲64位。
若是按照默認方式啓動是會報以下錯誤的。
若是咱們想在Visual Studio2013上調試64位ASP.NET MVC的網站(本機環境X64),須要把IIS Express設置成默認的64位開發服務器。
咱們能夠經過修改註冊表來進行設置,方法以下:
1.經過命令行直接寫入:
「reg add HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\WebProjects /v Use64BitIISExpress /t REG_DWORD /d 1」
拷貝上面的命令行到記事本中,保存後修改後綴名爲bat或cmd,雙擊運行便可。
2.第二種方法是手動添加鍵值:
打開「運行」,輸入「RegEdit」回車打開註冊表編輯器。
定位到:「HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\WebProjects」
確保有一個名爲「Use64BitIISExpress」REG_DWORD值。若是沒有,請建立它。
修改該項的基數爲16進制的數值數據值爲1(默認值=0)。如今,您能夠調試64位的網站了。(PS:這裏值爲0時則只能調試32位的網站。)
完成上面的修改後,你還須要確認下面這一項已經勾選。
修改完成,按F5成功運行網站程序後,咱們能夠在任務管理器的進程項中看到IIS Express的進程後不帶32的字樣,說明當前啓動的爲64位。下面附兩張圖做對比:
上圖:32位
上圖:64位
須要注意的是,需改完註冊表的值後須要重啓Visual Studio2013,而且是以管理員的權限啓動,否則會報下面的錯。
OK,如今咱們能夠正常的調試64位Web程序了。
參考:
Debugging VS2013 Websites Using 64-bit IIS Express Can't get IIS Express 8 beta to run website as 64-bit process