3.关于虚拟目录的支持IIS Express支持虚拟目录,这是对我来说很重要的一个改进,因为实际的项目中经常有很多目录是共享的,比如上传目录、配置文件目录等等,在ASP.net Development Server中这些都是办不到的。 IIS Express的站点模型和IIS是一致的,最基本的是站点,站点下可以区分应用程序、虚拟目录。 配置文件中如何手动创建它们,请参考上节中的介绍自行创建。在VS中如何创建呢? ①,将使用IIS或ASP.net Development Server的项目迁移到IIS Express上 注意:你需要安装 VS2010 SP1来让VS2010支持IIS Express。 在“解决方案管理器”中右击网站项目,并选择“使用IIS Express….”即可: VS会使用一个新的默认端口在IIS Express中创建网站。 ②,如果你想要将当前项目作为一个虚拟目录映射到现有的某个站点或新网站的根目录下,那么推荐在项目属性中更改(项目属性-WEB): 输入完成后,直接点击“创建虚拟目录”即可完成转换操作。VS将会自动在本机的IIS Express中完成配置。 ③,如果想映射到一个本地目录(比如资源共享,上传目录等)到IIS Express承载网站的应用程序下 那么可以参考上面介绍的配置文件手动更改。貌似IIS Express 中的 appcmd 也可以更改,不过个人觉得这类简单的配置,直接编辑就搞定了,用 appcmd 的话还需要先去学习怎么用它,怪麻烦的。 例子可以参考前面相关的内容。 4.关于管理员身份启动IIS Express设计是为了避免需要管理员权限就能完成大部分操作的。但是个别情况下它会要需要管理员权限才能运行(我当时在这里就栽了跟头,研究了N久)。这类的限制包括:
①,使用了保留的端口 通常操作系统的HTTP.sys(网络内核)将1024以下的端口设计为保留端口,如果IIS Express需要绑定到这些端口,则需要它拥有管理员权限,否则就会失败。错误类似这样: 反映到系统的日志中,就是这样的错误: 要解决这个问题,很简单,只要将端口绑定到非保留端口即可(大于1024),或使用管理员身份启动它备注1。 ②,绑定了其它域名 默认情况下,IIS Express只能绑定到 localhost。如果需要绑定到具体的域名供外部访问而又没有解决方案,那么就会遭遇到失败的问题。 要解决,也很简单——就是使用管理员身份启动它备注1。 ③,使用了HTTPS,但是端口不在 44300-44399之内 IIS Express用于承载HTTPS站点测试时,端口会限制在44300-44399之内,这同样是操作系统的限制。如果超过了这个范围,则需要以管理员身份启动它才能正常工作备注1。 ④,使用了自己的SSL证书的HTTPS IIS Express默认会安装一个测试的自签名证书用于开发,这允许开发人员在没有SSL证书的情况下进行开发。但是如果站点使用了自己的SSL证书,则会导致IIS Express需要管理员身份才能启动备注1。 5.关于命令行启动选项①,使用自己的config文件 默认情况下IIS Express会使用在“我的文档”中保存的 applicationhost.config。但是如果我们以命令行模式启动它,则可以指定配置文件的路径。 命令行是: iisexpress /config:<配置文件路径> 对于团队开发,这会比较有用,比如创建全局的config签入到源代码管理中,这样能同步全局的服务器目录结构配置(当然,如果小项目或者没有目录映射的话就没多大意义了)。启动IIS Express使用此命令行启动,就省去了每次牵出项目还得配置IIS Express的麻烦(同时,开发服务器的配置可以直接保存到项目中,也就避免了每个人的开发服务器可能有差别)。 这种情况下,调试可以使用VS的“附加到进程”来完成。 ②,启动一个临时网站 有些情况下,我们需要启动一个临时的网站(比如快速创建一个临时服务器等),便可以用类似的命令行来创建: iisexpress /path:<网站目录> /port:<端口> /clr:<CLR版本,V2.0|V4.0> iis express会复制一份配置文件到临时目录,并变更其中的站点信息后再启动,因此不会影响到本机已经配置的网站。 6.结束语IIS Express的出现让我着实高兴了一番,相比 ASP.net Development Server的过于简单、使用IIS每次都要以管理员身份启动VS来说,IIS Express给我们提供了一个很好的折衷方案。 虽然接受它需要花点儿功夫 :-) |