IIS express 配置和500.22错误解决详解
根据我实践经验:IIS Express还是只跑一个网站比较好,多了容易出错
配置转载一篇:
IIS Express7.5 微软Scott Guthrie发布了IIS Express:IIS的一个轻量级替代品,有希望替代Cassini(Visual Studio的内置Web服务器)。 IIS Express旨在解决Cassini的众多问题,开发者可以使用完整的IIS 7.x特性进行开发。 Windows XP或后面的操作系统都可以运行IIS Express,并不需要管理员帐户,它支持ASP、PHP、SSL、URL Rewrite、Media和其他IIS所支持的文件类型与扩展。 给Visual Studio 2010安装完一个补丁后就可以在Visual Studio 2010和Visual Web Developer 2010 Express中使用IIS Express了,之后发布的Visual Studio将会自带IIS Express。 伴随着ASP.net MVC 3而来的新东西,其中就包含IIS Express 7.5,介绍如下: 轻量,易于安装,安装包不到5M; 从VS中启动、调试应用程序不需要管理员身份; 带有完整的WEB服务器功能支持——支持SSL、URL回写以及其它IIS7.x的模块 和IIS7.x完全一致的web.config配置模型 可以和IIS、ASP.net Development Server 同时安装,没有任何冲突 支持XP及更高的操作系统,在所有的系统上都提供IIS7.x一致的开发功能 1,安装iisexpress_1_10_x86_zh-CN.msi 2,配置文件 c:\Program Files\IIS Express\config\templates\PersonalWebServer\applicationhost.config 配置文件中的节点默认情况下我们并不需要太多关注,因为大多数情况下我们需要关注的只有 <sites> 下的 <site> 节点,这里保存了网站、应用程序的定义,才是我们需要真正关心的。 ①.每个 <site> 就是一个网站。 这和IIS中的网站是一样的概念。serverAutoStart 设置了是否随着 IIS Express的启动而自动启动。如果设置为true,那么每次 IIS Express 启动都会自动加载(如果没有指定网站的话),否则只有以指定特定网站的模式运行时才会加载。 使用IIS Express加载特定网站的语法是: IISExpress.exe /site:<站点名> ②.<site> 下的<bindings>设置了这个站点的绑定信息。 节点下的每个<binding>都是一个端口绑定信息。典型的绑定配置如下:<binding protocol="http" bindingInformation="*:8080:localhost" /> protocol 指定了绑定的协议类型(IIS Express内建了 HTTP 和 HTTPS两种协议支持),而“*:8080:localhost”则指定的绑定的具体信息,它有三个部分组成:“绑定的IP:端口:主机名”。默认情况下,绑定到任何本地IP、非保留端口、绑定到localhost。注意这个localhost,有讲究,特定情况下可能会导致你很困惑,请参考本文后面的内容。 ③.<application> 这个节设置了网站的应用程序 每个网站都需要至少一个映射路径为“/”应用程序(它映射到根目录)。除此之外,你可以继续添加并行的不同路径的 <application> ,这就类似于IIS中的网站里配置的应用程序。 例如,在FishSite这个网站中,我需要添加一个单独的应用程序,映射到根目录下的fish目录,那么我就可以这样配置: <site name="FishSite" id="2"> <application path="/" applicationPool="Clr2IntegratedAppPool"> <virtualDirectory path="/" physicalPath="<网站的根目录>" /> </application> <application path="/fish" applicationPool="Clr2IntegratedAppPool"> <virtualDirectory path="/" physicalPath="<此应用程序的根目录>" /> <virtualDirectory path="/content/" physicalPath="</fish/content/ 目录对应的虚拟目录>" /> </application> <bindings> <binding protocol="http" bindingInformation="*:5000:localhost" /> </bindings> </site> 在<site>中,只有 path="/" 这个应用程序是必须的(不能缺少),其它都是可以任意添加的。 ④.<virtualDirectory> 设置了目录的映射信息 参见上面展示的代码。在每个<application>节下,必须至少存在一个 path="/" 的 virtualDirectory,它代表了这个目录映射的位置。除此之外,可以手动添加多个映射的路径不同的虚拟目录。 3,修改好配置文件后,启动IIS Express 启动 c:\Program Files\IIS Express\iisexpress.exe 4,在浏览器中输入http://localhost:8080 即可访问网站
出现500.22错误?
运行 cmd,进命令行模式,cd到你IIS Express的目录,运行appcmd migrate config "Default Web Site/"。
注意这里Default Web Site是你在上面那篇文章里site节点里配置的name,比如<site name="SampleWeb" id="1" serverAutoStart="true">里的SampleWeb,这里可能会报错,说:命令“MIGRATE”在对象“CONFIG”上不受支持。请运行“appcmd.exe CONFIG /?” 显示支持的命令。"
解决办法是到IIS express的目录下找到appcmd.xml,把<verb name="migrate" classId="DefaultConfigObject" />这句的注释去掉,
然后在运行上面那句命令,成功的话出现
Successfully migrated section "system.web/httpModules".
问题解决,感谢烙馅饼喽 分享上面的经验