VS2013无法启动 IIS Express Web解决方法
开发环境:windows8.1+vs2013
使用vs2013有一段时间了,因前期都是编写c/s程序,没有使用到b/s调试器。前几日,创建了一个mvc项目,突然发现vs2013无法调试,报了这样的错。
一下子有点蒙,why?
国外网友给出的解决方案
if you are working on asp.net mvc web sites in visual studio 2013 (vs2013), you need to make one registry change if you want to run iis express as a 64-bit process by default. use one of the methods, below.
command-line:
regedit:
navigate to:
hkey_current_user\software\microsoft\visualstudio\12.0\webprojects
make sure there is a reg_dword value named “use64bitiisexpress”. if not, create it.
set its value from 1 (default = 0).
我通过上面的方法成功解决了
修改项目属性的web项,如下。
f5运行,仍然出错。
这时候我知道了是web调试器没有启动,但是却不明白为什么。于是检查iis8.5的安装情况,把一些可能需要安装的都给装了。
f5运行,问题依旧。
问题焦点已经很清楚了,就是iis express未能启动。于是想到查看事件,看有没有记录更具体的日志。
相关的事件有三条,前两条相同,分别如下。
怎么和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强大的功能。确切地说:
它简练并且易于安装(文件大小不到10兆而且安装速度相当快)。在visual studio中不需要管理员权限即可启动和调试程序。提供了完整的web服务器功能——包括ssl, url重写,多媒体支持和所有其他的iis 7.x模块。它的可扩展模型和web.config配置结构和iis 7.x是一样的。它可以和iis web服务器还有asp.net开发服务器同时运行在同一台机器上(他们不会相互冲突)。它支持windows xp及更高版本的操作系统—在所有操作系统平台上提供了完整的iis 7.x功能集。
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位。
如果按照默认方式启动是会报如下错误的。
“未能加载文件或程序集“mvcapplication2”或它的某一个依赖项。试图加载格式不正确的程序。”
如果我们想在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,并且是以管理员的权限启动,不然会报下面的错。
“未能加载文件或程序集“antlr3.runtime.dll”或它的某一个依赖项。拒绝访问。”
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推荐阅读
-
VS2013无法启动 IIS Express Web的解决方法(全程图解)
-
VS2013无法启动 IIS Express Web的解决方法(全程图解)
-
IIS7.5提示无法写入配置文件web.config的解决方法
-
提示iis 无法启动World Wide Web Publishing服务的解决办法
-
VS2015 IIS Express无法启动的解决方法
-
xp系统VS2015无法启动提示无法启动IIS Express Web服务器的解决方法图文教程
-
visual studio 启动无法打开IIS express
-
IIS无法启动提示“服务没有及时响应启动或控制请求”的解决方法[图解]
-
IIS做WEB服务器无法下载某些中文名文件的解决方法
-
Visual Studio提示“无法启动IIS Express Web服务器”的解决方法