IIS Express 及 vs2008下使用IIS Express
介绍 IIS Express
开发 ASP.NET 的应用程序是我的主要工作。当然我会选择最适合的开发环境。客户多属于企业用户,我的开发的选择,多半是 ASP.NET Web Application + SQL Server + IIS。
在内部 Demo 开发技术时,则会偶而使用 Web Development Server 来示范。然而在许多项目上,仍然看到选用 Web Development Server 来开发企业用的程序,虽然知道不妥,也常常倡导,但在 Visual Studio 预设使用 Web Development Server 的状况,实在无法防止误用的情形。
以下就探讨一下 IIS 7,Web Development Server,及2010/01/13 推出的 IIS Express
使用 IIS
所有的 ASP.NET 应用程序,无论是 WebSite,WebForm,还是最新的 MVC,最终需要部署到 IIS 上。我认为开发环境最好直接使用 IIS,避免开发环境与正式环境差异太大,开发人员与维运人员的认知才会趋于一致。
优点
与正式环境趋于一致。尤其在权限设定差异最为常见。
缺点
设定繁复,且不同版本的 IIS会有不同的设定方式。例如 IIS5, 5.1, 6, 7, 7.5。随着IIS不同版本,设定的位置,接口,账号都有极大的不同。
在 Vista 或 Windows 7 上,由于UAC 的限制,需要以管理员权限执行 Visual Studio 才能开发。
Windows Home 版本无法安装 IIS。尤其学生或 SOHO 人员常常经费不多,无法学习或开发简易的程序。
在 Windows XP 上,只能使用 IIS 5.1。此时如果想要在 XP 上开发 IIS 7 的 ASP.NET 程序就很难了。
想要让开发人员对不同 IIS 版本都有一定程度的了解,几乎是不可能的事了。开发人员只能尽快地开发出需求对应的功能,对于如何部署一事,大部份都不太在意。
ASP.NET Web Development Server 的缺点
为了克服 Visual Studio 使用 IIS 的困难,微软开发了 ASP.NET Web Development Server 这个工具。
优点
简化开发环境。开发人员不必安装 IIS。这一点,也克服了 Windows Home 版本无法安装 IIS 的问题。
缺点
一个应用程序一个 Port。无法使用虚拟目录。也不适用 Single Sign On 的开发。
不支援 HTTPS
无法使用自订的验证方式 ,IPrincipal, IIdentity
只能给开发机使用
与 IIS 相比,启动时间长
直接使用与开发人员所使用的账号作为执行 security context,而开发人员所登入的账号常常又是管理员,造成与部署 到IIS的真实状况 (IUser, network Service, w3wp 等)差异甚大。
无法模拟asp。如果您的程序有 asp 的网页,就不适用 Web Development Server。
与 IIS 7 上的 http handler, http module 执行方式不同。见http://charlesbc.blogspot.com/2009/11/aspnet-file-does-not-exist.html
etc.
由于 Web Development Sever 的设计先天上就与真实 IIS 的执行大异其趣,许多怪异的行为层出不穷。我非常不建议使用 Web Development Server 来执行软件开发项目。
IIS Express
由于 UAC, IIS 7 等后来的技术演变,原先设计的 Web Development Server 早已不符合需求了。微软也体认到了这一点,于是在2010 年中开始着手开发下一个继任的版本,也就是 IIS Express 7.5。
优点
使用 IIS 7 同一个 Kernel。因此行为与 IIS 大致相同。例如可以模定 https,http modules 与 http handlers 也与 IIS 7 的执行结果一致。
使用与开发人员相同的 security context,因此不受 UAC 的限制。
IIS Express 同时包含了 IIS 与 Web Development Server 的优点。这也是我推荐的原因。
缺点
还是使用了开发人员的 security context。开发人员容易误以为程序的执行结果都是对的,却不知道其实是有许多前题(即安全设定)。
由于 IIS Express 才 release 没多久,还无法知道有哪些实际的缺点。这个缺点的清单或许会愈列愈多吧。
参考
http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx
使用 IIS Express
1. Visual Studio 2010 SP1 以上的VS版本, VS中集成子IIS Express. 其它只能使用命令行开启IIS Express
安装
到 Internet Information Services (IIS) 7.5 Express 下载后执行。安装过程完全是「下一步」「是」「完成」的过程,其间没有任何输入选项。或者到 Web Platform Installer 来安装 这个连结。
自行启动 IIS Express
预设的状况下,是要自行修改 IIS Express 设定及启动 IIS Express 的。以下就介绍如何在 Visual Studio 2010 上使用 IIS Express。
首先,建立一个 Web Application,并且命名为 WebApplication1。接着,修改 WebApplication1 的 Property,在 “Use Custom Web Server” 中设定为 http://localhost:12345/
网站配置:
以notepad 打开 %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config,修改configuration\system.applicationHost\sites 如下
<sites>
<site name="WebSite1" id="1" > <!-- serverAutoStart="true" -->
<application path="/">
<virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
</application>
<bindings>
<binding protocol="http" bindingInformation=":8080:localhost" />
</bindings>
</site>
<site name="WebApplication1" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\bc\Documents\visual studio 2010\Projects\WebApplication1\WebApplication1" />
</application>
<bindings>
<binding protocol="http" bindingInformation=":12345:localhost" />
</bindings>
</site>
...
我主要增加了一个新的 site,name 为 WebApplication1。id=2,请不要重复即可。在 physicalPath 中,请填入上一步 Visual Studio 所建立的 web Application 的应用程序目录。bindngInformation 则彷校范例 WebSite1的样子,修改为 :12345:localhost,意思是使用 localhost 的12345 port
而我将 第一个 Site name=”WebSite1” 的 serverAutoStart 移除掉了。因为我不想一启动 IISExpress 就会启动这个WebSite1范例。
最后,按Win+R键或在 cmd 中执行下面指令以启动 IISExpress
"C:\Program Files\IIS Express\IISExpress.exe" site:WebApplication1
执行结果如下图
在Windows 右下方也会出现图示。在图示上按右键可以查询执行。
当然,我们就可以执行 http://localhost:12345/ 了
整合Visual Studio 2010 开发环境
上述的设定过程是不是很麻烦呢?是的,可是没办法。我们必须等到 Visual Studio 2010 SP1之后,才能享到直接在开发环境中整合设定的好处。使用 Visual Studio 2010 SP1 Beta 时,会多出一个「use IIS Express」的选项,如下画面。
在未使用 IIS Express 的 Web 项目,也会多出一个 Use IIS Express 在快显选单上。
结论d
我还是等到 Visual Studio 2010 SP1 好了。这样比较简单。但对于其它如 VS 2005, VS2008 等使用者,只好说声 Sorry,乖乖地自行启动 IIS Express 吧!
技巧:
针对VS2005,VS2008用户, 可新建一个*.vbs文件
Set shell = Wscript.createobject("wscript.shell")
a = shell.run ("""C:\\Program Files\\IIS Express\\iisexpress.exe""",0,true)
这样就可以解决用cmd运行C:\\Program Files\\IIS Express\\iisexpress.exe时, 窗口要一直开着的问题
"""三个引号
引: http://tangzhongxin.blog.163.com/blog/static/892196120111024103949351/