Visual Studio中用于ASP.NET Web项目的Web服务器
当您在 Visual Studio 中开发 Web 项目时,需要 Web 服务器才能测试或运行它们。 利用 Visual Studio,您可以使用不同的 Web 服务器进行测试,包括 IIS Express、Internet Information Services (IIS)、外部主机或自定义 Web 服务器。 您可以将其中任何一种 Web 服务器用于基于文件的 Web 应用程序项目。 对于基于文件的网站项目,您可以使用 IIS Express。 本主题介绍每种 Web 服务器以及如何选择要用于测试的 Web 服务器。
下表提供了用来在 Visual Web Developer 中选择 Web 服务器的摘要指南。
Web 服务器 |
何时使用 |
---|---|
IIS Express |
IIS Express 是 Visual Studio 2012 和 Visual Studio 2013 中 Web 应用程序项目的默认 Web 服务器,推荐用于 Web 应用程序项目和网站项目。 |
本地 IIS |
在以下情况使用 IIS:您想要使用与运行活动站点的服务器环境最为接近的服务器环境来测试 Web 应用程序,而且您可以在开发计算机上安装和使用 IIS。 有关详细信息,请参阅 本主题后面的将 IIS 作为开发服务器与 Visual Studio 结合使用的缺点。 可以将 IIS 用于 Web 应用程序项目,但不能将其用于网站项目。 |
外部主机 |
您可以指定将用于测试的外部主机的 URL。 有关详细信息,请参阅 本主题后面的将外部主机作为开发服务器与 Visual Studio 结合使用的优点。 |
自定义 Web 服务器 |
Visual Studio 2013 增加了对在您的项目中指定自定义 Web 服务器的支持;此功能使开发人员能够定义用于测试其 Web 应用程序的环境。 |
IIS Express 设计为模拟 IIS,但 IIS Express 与 IIS 完整版之间的细微差异可能导致错误,这些错误只会在您已将网站部署到 IIS 生产版之后发生。 有关详细信息,请参阅 本主题后面的使用 IIS Express 的缺点。 如果使用 IIS Express,则建议先在使用目标 IIS 版本的临时服务器上测试应用程序,然后再将它部署到活动站点。
默认情况下,Visual Studio 2012 和 Visual Studio 2013 使用 IIS Express。 有关以下内容的详细信息如何指定一种替代 Web 服务器,请参见How to: Specify the Web Server for Web Projects in Visual Studio。
IIS Express 包含 IIS 7 和 IIS 8 Web 服务器的许多功能,但不要求在您的计算机上安装和管理 IIS。 由于 IIS Express 与 IIS 7 和 IIS 8 相似,因此,与使用其他 Web 服务器相比,利用它可以将网站更平稳地切换到 IIS。
IIS Express 具有以下特点:
它支持并启用与 IIS 7 和 IIS 8 相同的扩展模型和 Web.config 文件设置。
它不要求更改您的 Web 应用程序代码。
它可以与完整版 IIS 以及其他 Web 服务器并行安装。 您可以为每个项目选择一个不同的 Web 服务器。
在企业环境中,IIS Express 具有以下特点:
它不要求使用管理员帐户来运行或调试应用程序。
它不在另一台计算机上处理针对浏览器的请求,从而使得在企业环境中批准请求变得更加容易。
它可安装在不支持 IIS 7 或 IIS 8 的 Windows 版本上。
提示 |
---|
虽然 IIS Express 派生自 IIS 且支持 IIS 的核心功能,但这些服务器之间还是存在一些差异。 有关详细信息,请参阅 IIS Express 概述,以及本主题后面的使用 IIS Express 的缺点。 |
安装 Visual Studio 2012 和 Visual Studio 2013 时自动安装 IIS Express。 如果要在 Visual Studio 2010(要求 SP1)中安装 IIS Express,可使用 Microsoft Web 平台安装程序。
安装 IIS Express
在浏览器中,转到 Microsoft.com/web 站点的安装页。
下载安装程序,然后按照步骤完成安装。
在 Visual Studio 中运行项目时,IIS Express 将自动启动,而在 Visual Studio 中关闭网站项目或 Web 应用程序项目时,它会随即停止。 IIS Express 正在运行时,它在系统任务栏中显示一个图标,如下图所示。
下表列出了针对 IIS Express 的一些典型任务以及执行这些任务的方法。
任务 |
步骤 |
||
---|---|---|---|
显示在 IIS Express 上运行的所有站点的列表 |
右击系统任务栏中的 IIS Express 图标,然后单击“显示所有应用程序”。 |
||
查看网站目录位置、配置路径以及 .NET Framework 版本 |
在 IIS Express 窗口中选择网站。 信息将显示在网站列表的下方。 |
||
停止 IIS Express |
右击任务栏图标,然后选择“退出”。
|
在新建基于文件的网站项目或 Web 应用程序项目时,将会为该项目随机选择一个端口。 例如,如果要测试名为 ExamplePage.aspx 的页面,则当在 IIS Express 上运行该页面时,页面的 URL 可能为:
http://localhost:31544/ExamplePage.aspx
如果要在特定端口上运行 IIS Express,可以对服务器进行相应配置。 在下列情况中您可能要执行上述操作:
您已复制一个 Web 应用程序项目或网站项目,并且您需要对这两个项目同时进行调试和处理。 在这种情况下,将会出现端口冲突,必须更改其中一个项目的端口名称。
您的项目包括对绑定到特定端口的客户端项目或 Web 服务的引用。
项目中的代码将侦听某个特定端口,并且您希望能够使用 IIS Express 测试应用程序。
如果您的代码引用根级资源(如 CSS 和 JavaScript 文件)而没有指定它们在项目根级别,当您在 Visual Studio 中测试时,应用程序可能正常工作但是将其部署到 IIS 生产环境时会失败。 根据配置 IIS 的方式,在生产环境中可能失败,因为 IIS 可能在 IIS 网站的根中查找根级资源。 例如,如果您在 Visual Studio 中创建新的 MVC 项目,将在 Views\Shared\_Layout.cshtml 文件中找到此行代码:
@Styles.Render("~/Content/css")
波形符 (~) 指定此资源位于应用程序的根级别。 如果删除波形符并在带 IIS Express 的 Visual Studio 中运行应用程序,在应用程序外观上不会有变化。
但是,当您部署到 IIS(或选择 IIS 作为 Visual Studio 中的开发 Web 服务器)时,您可以看到 CSS 样式丢失,因为 IIS 无法找到该资源:
Visual Studio 中的开发服务器与 IIS 之间的重要差别在于各服务器运行 ASP.NET 页的安全上下文。 当您部署网站或 Web 应用程序在 IIS 上运行时,这一差别可能会成为问题之源。
使用 IIS Express 运行页面时,页面将在当前用户帐户的上下文中运行。 例如,如果作为管理员级别的用户运行,则在 IIS Express 中运行的页面将具有管理员级别特权。 相反,在 IIS 7 和 IIS 8 中,默认情况下 ASP.NET 以具有有限特权的帐户运行。 有关详细信息,请参阅 IIS 上的应用程序池标识。 net 网站。
如果您只是读取和运行 ASP.NET 页中的代码,则此差别无关紧要。 但是,这两种 Web 服务器的不同安全上下文会以几种方式影响测试:
数据库访问:使用 IIS Express 时,通常可以使用 Windows 集成身份验证来访问 SQL Server。 但是,在 IIS 中运行同一页时,将在应用程序池标识的上下文中运行该页。 您可以改用 SQL Server 身份验证或添加页以 SQL Server 登录名在其下运行的应用程序池标识。 有关详细信息,请参阅 Accessing SQL Server from a Web Application、ASP.NET Security Architecture 和 应用程序池标识。
代码访问安全性 如果网页以中等信任模式运行(大多数 Web 承载提供程序要求如此),则该网页在 Visual Studio 中的服务器上运行的方式与在 IIS 上运行的方式可能会不同。
访问页请求的其他资源:这可能包括读取和写入非网页文件,读取和写入 Windows 注册表等。
Visual Studio 2013 使您能够配置外部 Web 服务器来进行测试,此功能在 Visual Studio 2012 和较早的 Visual Studio 版本中称为“自定义 Web 服务器”。 当开发人员将其 Web 应用程序配置为使用外部主机进行测试时,开发人员会享有若干优势,下面的各部分将讨论这些内容。
例如,如果您 Web 应用程序的文件存储在网络共享上,而网络共享也是 IIS 在开发或临时 Web 服务器上承载的网站的内容文件夹,则您可以输入该网站的 URL 作为外部主机。 此方案使其他客户端能够测试应用程序,这在使用 IIS Express 时是不可能的,因为它设计为在本地计算机上进行测试。
因为外部主机服务器通常位于远程服务器上,所以每次您按 F5 开始调试时,不会重新构建您的应用程序。 这使您能够忽略仍处于开发阶段的源代码文件中的生成错误,但仍能够测试应用程序中已完成的部分。
此外,因为您的远程 Web 服务器可能作为服务运行,所以,应用程序测试似乎可能响应时间更快,因为网站已在运行。 相比之下,当每次按 F5 调试应用程序时,都可能需要重新启动 IIS Express。
因为 Web 服务器是远程的,所以,您可能很难按照模拟本地 Web 服务器的方式配置您的调试体验。 例如,远程 Web 服务器具有的身份验证设置可能会阻止 Visual Studio 作为调试器连接到 Web 应用程序,因此,如果您要向代码中添加 Debugger.Break() 语句,则在到达此语句时将收到 HTTP 401“拒绝访问”消息。
Visual Studio 2013 使开发人员能够向其项目中添加自定义 Web 服务器,Visual Studio 将在下拉菜单中显示这些自定义 Web 服务器以及内置的 Web 服务器类型。 有关以下内容的详细信息配置自定义 Web 服务器,请参见 http://go.microsoft.com/fwlink/?LinkID=324006。
用于 Microsoft 操作系统的生产 Web 服务器是 IIS,它可以包括 Web 服务器、文件传输协议 (FTP) 服务器、简单邮件传输协议 (SMTP) 虚拟电子邮件服务器以及其他设备。 为了运行 IIS,您必须使用在下表中列出的 Windows 版本之一。
Windows 版本 |
IIS 版本 |
||
---|---|---|---|
Windows Server 2012 R2 Windows 8.1 |
IIS 8.5 |
||
Windows Server 2012 Windows 8 |
IIS 8.0 |
||
Windows Server 2008 R2 Windows 7(家庭高级版、专业版、企业版和旗舰版) |
IIS 7.5 |
||
Windows Server 2008 Windows Vista(Home Premium、Business、Enterprise 和 Ultimate 版本) |
IIS 7.0 |
||
Windows Server 2003 Windows XP Professional x64 |
IIS 6.0 |
||
Windows XP Professional x32 |
IIS 5.1
|
通过直接将 IIS 用作开发 Web 服务器,使您能够在更接近于 IIS 生产 Web 服务器的环境中工作。 这可帮助您在项目投入使用之前解决配置问题。 如果您使用 IIS Express,则转换到 IIS 生产 Web 服务器可能会要求您执行额外的配置任务,因为测试服务器和生产服务器之间存在不同的安全上下文。
与使用 IIS Express 相比,将 IIS 用作开发服务器可能需要执行更多的设置和配置任务才能与 Visual Studio 结合使用,其中包括:
IIS 和 ASP.NET 都必须在 Windows 中启用,而且 ASP.NET 必须在 Windows 中注册。 (如果您先安装 .NET Framework,再启用 IIS,则注册是一个单独的步骤。 有关详细信息,请参阅 ASP.NET IIS Registration Tool (Aspnet_regiis.exe).)
您必须以管理员身份运行 Visual Studio 才能使用 IIS。
此外,如果存在以下任何情况,则您可能无法使用 IIS:
您的企业工作场所策略不允许在开发人员计算机上启用 IIS 这样的服务器角色。
您的企业工作场所策略不允许开发人员在 IIS 上具有管理员帐户。
在不支持 IIS 的 Windows Home Edition 中开发 ASP.NET 网页。
因安全原因,您不想在计算机(例如,家庭网络中)中承载 Web 服务器。
您的 Web 项目使用 SQL Server Express LocalDB 数据库。 有关详细信息,请参阅 SQL Server Express 博客上的将 LocalDB 与完整 IIS 结合使用。
在这种情况下,您可以使用 IIS Express。
在 Windows XP、Windows Server 2003 以及 Windows 的更高版本中,默认情况下不会安装 IIS。
如果你有 Windows Server 2012 或 Windows 8并且希望安装 IIS 8,请参阅 IIS 上的在 Windows Server 2012 上安装 IIS 8。 net 站点或 TechNet 站点上的安装 IIS 8 和 ASP.NET 模块。
如果你有 Windows Server 2008 或 Windows 7 并且想要安装 IIS 7,则可以下载 Web 平台安装程序,使用它安装 IIS 7 建议的配置。 这样做会在您的计算机上启用 IIS 和 ASP.NET。 有关以下内容的详细信息如何将 IIS 7 用于 Visual Studio,请参见Running Web Applications on Windows Vista with IIS 7.0 and Visual Studio或Running Web Applications on Windows Server 2008 with IIS 7.0 and Visual Studio。
如果你正在使用 Windows Server 2003 并且想要安装 IIS 6,请参阅 Microsoft Technet 站点上的安装 IIS (IIS 6.0)。 另请参见如何在 IIS 6.0 中启用 Visual Studio .NET 使用的扩展 和 How to: Create and Configure Local ASP.NET Web Sites in IIS 6.0。
Visual Studio中用于ASP.NET Web项目的Web服务器的更多相关文章
- 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目
原文: 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目 本主题介绍如何在以下产品中使用 一键式发布 发布(部署)Web 应用程序项目: Visual Studio ...
- 在Chrome+Visual Studio中调试asp.net程序很慢的问题(Firefox也有类似问题)
在Chrome+Visual Studio中调试asp.net程序很慢的问题(Firefox也有类似问题) 今天开始起在Chrome中调试,发现问题主要出在菜单栏(layout文件)中,google了 ...
- 【翻译】在Visual Studio中使用Asp.Net Core MVC创建第一个Web Api应用(二)
运行应用 In Visual Studio, press CTRL+F5 to launch the app. Visual Studio launches a browser and navigat ...
- Visual Studio中xml文件使用app.config、web.config等的智能提示的方法
在.Net开发的过程中,有时我们需要使用Xml文件作为配置文件(基于某些情况的考虑),而不是app.config.web.config这种,但是我们在xml中配置时希望可以增加类似编辑app.conf ...
- 【翻译】在Visual Studio中使用Asp.Net Core MVC创建你的第一个Web API应用(一)
HTTP is not just for serving up web pages. It's also a powerful platform for building APIs that expo ...
- [转]【翻译】在Visual Studio中使用Asp.Net Core MVC创建你的第一个Web API应用(一)
本文转自:https://www.cnblogs.com/inday/p/6288707.html HTTP is not just for serving up web pages. It’s al ...
- 在 Visual Studio 中部署 ASP.NET Core 应用
另一篇:在 Docker 中手工部署 ASP.NET Core 应用 操作步骤 1. 安装 Docker For Windows(安装之前 Windows 需要 开启 Hyper-V 虚拟机功能 ) ...
- maven web项目的web.xml报错The markup in the document following the root element must be well-formed.
maven项目里面的web.xml开头约束是这样的 <?xml version="1.0" encoding="UTF-8"?> <web-a ...
- Idea创建Maven Web项目的web.xml版本问题
问题描述:创建Maven Web项目时,选择MavenWebapp模板时,自动生成的web.xml文件版本为1.4,如图所示 如何才能修改为常用的4.0版本的xml文件呢? 这个文件是从Maven仓库 ...
随机推荐
- Java的四种引用,强弱软虚,用到的场景
众所周知,java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活).为了解决内存操作不灵活这个问题,可以采用软引用等方法. 在J ...
- "大中台、小前台”新架构下,阿里大数据接下来怎么玩? (2016-01-05 11:39:50)
"大中台.小前台”新架构下,阿里大数据接下来怎么玩?_炬鼎力_新浪博客 http://blog.sina.com.cn/s/blog_1427354e00102vzyq.html " ...
- JavaScript和jQuery改变标签内容
HTML: <div id="mazey">content</div> JavaScript: var mazey=document.getElementB ...
- 浅析TCP/IP
TCP/IP概述 TCP/IP起源于1969年美国国防部(DOD:The United States Department Of Defense)高级研究项目管理局(APRA:AdvancedRese ...
- Python Interpreter
在开始之前,我们先限定下python解释器的意思.当讨论Python的时候,解释器这个词可以用在不同的地方.有的时候,解释器指的是Python Interpreter,也就是你在命令行交互界面上输入p ...
- (转)fiddler使用简介--其二
原文地址:http://www.cnblogs.com/miantest/p/7290176.html 在上一篇中介绍了Fiddler的基本使用方法.通过上一篇的操作我们可以直接抓取浏览器的数据包.但 ...
- python基础实例
1.在Python 语言中,对象是通过引用传递的.在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对象的引用(并不是值)赋值给变量. 如:x=1 1这个整形对象被创建,然后将这个对象的引 ...
- Python2 socket 多线程并发 ThreadingTCPServer Demo
# -*- coding:utf-8 -*- from SocketServer import TCPServer, StreamRequestHandler import traceback cla ...
- django内容总结
一.django请求的生命周期 1.django请求生命周期如图所示 2.django本身没有socket,客户端请求先到达wsgi然后再提交给django,而wsgi的本质就是个socket程序 注 ...
- "export" in SHELL
在shell中,若某一变量需要在随后的子程序中运行,则需要以 export 来使变量变成环境变量: export var export的用法总结: 1:一个shell中用export定义的变量,只对当 ...