开发环境: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