ASP.NET/配置IIS
ASP.NET网页是由IIS作为web server来运行的。因此有必要配置好IIS。
启动IIS管理器软件
[编辑]执行Inetmgr命令。
创建HTTPS
[编辑]在IIS管理界面,选择左侧的“连接”下的服务器名字,在中部选择“服务器证书”,然后点击右侧的“创建证书申请”或“完成证书申请”或“创建自签名证书”
在在IIS管理界面点击具体的“网站”,在右侧点击“绑定...”,弹出对话框中点击“添加”,创建“https”类型。
IIS上安装ASP.NET
[编辑]从Windows 8或Windows Server 2012上的ASP.NET 4.5开始,ASP.NET 4.5成为Windows组件,Aspnet_regiis.exe工具不再用于安装/卸载。
由此,安装ASP.NET 4.5的几种方法:
- 在管理员权限的命令行提示符下,执行
dism /online /enable-feature /featurename:IIS-ASPNET45
- Windows 8,从Windows组件安装/卸载界面的"Internet Information Services-> World Wide Web Services -> Application Development Features -> ASP.NET 4.5",在"Turn Windows Features On/Off"下选中"IIS-ASPNET45"。
- Windows Server 2012使用Server Manager,在"Web Server (IIS) -> Web Server ->Application Development -> ASP.NET 4.5"下选中"IIS-ASPNET45"。
IIS支持的ASP.NET版本
[编辑]IIS应用程序池中没有.net 4.5可选,需要怎么安装呢?事实上IIS应用程序池没有.Net 4.5是正常的。
.net 4.5只是做为.net 4.0的一个in-place upgrade,不是一个全新的版本,即CLR没有变化,只是加入了新的类库,修正了一些bug,还是改进性能等。所以可以在.net 4.0的应用程序池中运行任意的.net 4.5的网站,这是没有问题的。
.net 3 和.net3.5也是.net 2.0 的in-place upgrade,因此在IIS的APP POOL中也没法选择.net3 和.net 3.5.
.NET Framework迄今只有四个大版本:1.0、1.1、2.0、4.0。其中头两个基本没人在用了。2.0是从2005年发布,至2010年4.0发布,历时五年。
创建一个Web Site
[编辑]在IIS管理器中,在左侧Connections Panel的根节点(应是本地计算机名字)上鼠标右键,选择“Add Web Site...”。弹出对话框中,通常只需设置3项:
- Site Name:在IIS管理器中便于记忆的一个名字
- Physical Path:所有网页与相关文件存放的根路径
- Binding之Port:用http访问该计算机的该端口,即可以打开缺省网页。
修改一个已有的Web Site
[编辑]在IIS管理器中,在左侧Connections Panel选中要修改的Web Site。然后在右侧Actions Panel中选择“Bindings...”修改端口号;选择“Basic Settings...”修改物理路径。
在左侧Connections面板的根节点(当前计算机)下,然后在中央面板的IIS的配置项目选中:
- “ISAPI and CGI restrictions”,取消一切限制。
- 设置默认文档
- MIME类型
- Authentication:需要enable“Anonymous Authentication”。
- 在IIS的设置项目列表中双击ASP,“启用父路径”,把“Send Errors to Browser"设为真。
配置Application Pools,使得.NET Framework版本与开发时的版本一致。在要使用的Application Pool的Advanced Settings...中:
- Enable 32-bit Applications
- Identity选中built-in account的ApplicationPoolIdentity。C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files与C:\Windows\Temp设置Everyone具有Full control权限。网页所在的目录应该授予IIS_USER
虚拟目录
[编辑]在左侧选中一个site,在右侧点击“View Virtual Directories”,即可查看与创建虚拟目录。这时,虚拟目录下的静态网页可以正常打开,但动态网页还不行。在当前site下鼠标右击虚拟目录,选择“转换为应用程序”。之后就可以正常访问虚拟目录中的ASP.NET动态网页了。
这里需要理解IIS的应用程序概念。一般情况下,一个应用程序就是一个网站(但不是所有情况),而应用程序中如果再创建应用程序,那么它就是这个网站的子应用。 在IIS中,可以为应用程序选择应用程序池,这说明应用程序是一个独立的整体。创建的子应用并不依赖父应用,而是独立的。而虚拟目录是不可以选择应用程序池的,这也说明了它是应用程序的组成部分。
Web 应用程序是一种在应用程序池(Application Pool)中运行并通过 HTTP 协议向用户提供信息服务(通常以HTML 格式表达信息)的软件程序。创建 Web 应用程序时,Web 应用程序的名称将成为网站 URL 的一部分,用户可以通过 Web 浏览器发出针对该 URL的HTTP请求。使用Visual Studio创建的“ASP.NET网站”,其实是一个“Web 应用程序”,它并不等于IIS中的“网站”。
简而言之,一个“网站(Web Site)”包含一个或多个“ Web 应用程序(Web Application)”,一个Web 应用程序包含一个或多个“虚拟目录(Virtual Directory)”,而虚拟目录则映射到 Web 服务器或远程计算机上的物理目录。
程序池托管管道模式
[编辑]每个 Application Pool 对应着一个Worker Process:W3WP.exe 进程。W3WP.exe在IIS7中如何工作, 取决于IIS 7 的应用程序池托管管道模式是什么,IIS7目前有2个模式:
- 经典模式:就是IIS6的处理方式。即: IIS ISAPI extension,也就是 aspnet_isapi.dll。
- 集成模式:IIS7的一个大改进,让IIS集成了.NET功能,不再依靠IIS 6的aspnet_ISPAI.DLL。也就是说所有的 HTTP Request请求都要经过.NET来处理(包括html, php等)。使用托管处理程序(System.Web.UI.PageHandlerFactory)响应针对“.aspx”的请求。 .NET 的诸多功能已经成为 IIS 7 的一部分。
在Visual Studio中使用IIS作为调试的Web Server
[编辑]需要“创建虚拟目录”以及“设置启动项目”。