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
编辑需要“创建虚拟目录”以及“设置启动项目”。