对比IIS与ASP.NET Development Server

     若要测试或运行 ASP.NET Web 应用程序,需要一台 Web 服务器。用于 Microsoft 操作系统的成品 Web 服务器是 IIS,它包括 Web 服务器、文件传输协议 (FTP) 服务器、简单邮件传输协议 (SMTP) 虚拟电子邮件服务器以及其他设备。为了运行 IIS,您使用的 Windows 版本必须是设计用于在网络环境中用作服务器的版本。这包括 Windows Server 2003 的 Web 版。

    在 Windows 2000 Server 和 Windows 服务器操作系统的早期版本中,IIS 作为操作系统的一部分默认安装。在 Windows XP 和 Windows Server 2003 中,不会默认安装 IIS;可以在“控制面板”中使用“添加/删除程序”中的“添加/删除 Windows 组件”选项来添加 IIS。(在 Windows Server 2003 中,可以使用应用程序服务器组件安装 IIS。)

可能会因下列原因不能使用 IIS:

  • 在不支持 IIS 的 Windows XP Home Edition 中开发 ASP.NET 网页。

  • 因安全原因,您不想在计算机(例如,家庭网络中)中承载 Web 服务器。运行 IIS 等 Web 服务器需要执行附加的步骤来帮助确保服务器的安全,还需要随时注意安装最新的安全更新。

  • 公司策略不允许安装某些服务器组件,如 IIS。

ASP.NET Development Server

如 果您不能或不想使用 IIS 作为 Web 服务器,仍然可以通过使用 ASP.NET Development Server 来测试 ASP.NET 网页。ASP.NET Development Server(Visual Web Developer 中附带的)是在 Windows 操作系统(包括 Windows XP Home Edition)中本地运行的 Web 服务器。它专门构建用于在本地主机方案中(从 Web 服务器所在的计算机中浏览)提供或运行 ASP.NET 网页。换句话说,ASP.NET Development Server 会针对本地计算机上的浏览器请求提供网页。它不会为其他计算机提供网页。此外,它也不会提供应用程序范围外的文件。ASP.NET Development Server 提供了在向运行 IIS 的成品服务器发布网页之前在本地测试网页的有效方式。

ASP.NET Development Server 只接受本地计算机上的经身份验证的请求。这要求服务器可以支持 NTLM 或基本身份验证。

Note注意

一种最佳做法是不要在作为管理员登录时运行 Visual Web Developer,而应以更受限的帐户运行它。这有助于防止意外访问服务器中的其他文件。

ASP.NET Development Server 只能处理单独的网页,且不包括 IIS 的附加设备。例如,ASP.NET Development Server 不支持 SMTP 邮件服务器。如果您的 Web 应用程序涉及发送电子邮件,则必须具有 IIS SMPT 虚拟服务器的访问权以测试电子邮件,因为 ASP.NET Development Server 不能转发电子邮件或调用可以转发邮件的服务器。

运行 ASP.NET Development Server

默 认情况下,ASP.NET Development Server 随 Visual Web Developer 一起安装。如果您正在处理文件系统网站,则 Visual Web Developer 将自动使用 ASP.NET Development Server 来运行网页。默认情况下,在为本地主机方案随机选择的端口上调用 Web 服务器。例如,如果要测试名为 ExamplePage.aspx 的页,则当在 ASP.NET Development Server 中运行该页时,该页的 URL 可能为:

  
http://localhost:31544/ExamplePage.aspx

关闭浏览器时,ASP.NET Development Server 再次关闭。

如果要在特定端口上运行 ASP.NET Development Server,可以为此相应地配置服务器。在下列情况中您可能要执行上述操作:

  • 如果应用程序中的代码侦听特定端口,并且您想使用 ASP.NET Development Server 测试应用程序。

  • 如果您的应用程序包括对绑定到特定端口的客户端项目或 Web 服务的引用。

Visual Web Developer 不能保证指定的端口在运行文件系统网站时可用。有关详细信息,请参见如何:为 ASP.NET Development Server 指定端口

ASP.NET Development Server 的安全上下文

ASP.NET Development Server 与 IIS 之间的重要差别在于各服务器运行 ASP.NET 页所在的安全上下文。由于页运行方式不同,此差别可能会影响测试。

使 用 ASP.NET Development Server 运行页时,该页在当前用户帐户的上下文中运行。例如,如果您作为管理员级别用户运行,则在 ASP.NET Development Server 中运行的页将具有管理员级别特权。相反,在 IIS 中,ASP.NET 默认在通常具有有限特权的特殊用户(ASPNET 或 NETWORK SERVICES)的上下文中运行。ASPNET 或 NETWORK SERVICES 帐户是服务器计算机的本地帐户(不是域帐户),这限制了对其他计算机中的资源的访问。

如果您只是读取和运行 ASP.NET 页中的代码,则此差别无关紧要。但是,这两种 Web 服务器的不同安全上下文会影响以下测试:

  • 访问页请求的其他资源   这可能包括读取和写入非网页文件,读取和写入 Windows 注册表等。

  • 数 据库访问   使用 ASP.NET Development Server 时,通常可以依靠 Windows 集成身份验证来访问 SQL Server。但是,当同一页以 ASPNET 或 NETWORK SERVICES 帐户在 IIS 中运行时,该页将在本地用户的上下文中运行,通常必须将该页配置为使用包括关于用户和密码信息的连接字符串。有关详细信息,请参见 Access Permissions for Web Applications (Visual Studio)。

  • 代码访问安全   如果您的页涉及访问不同区域中受保护的资源,则该页在 ASP.NET Development Server 和 IIS 中运行时可能有所不同。

即使可使用 ASP.NET Development Server 测试出页正常运行,但在将其发布到运行 IIS 的成品 Web 服务器后,应再次进行测试。

ASP.NET Development Server 上的文件授权

在文件系统网站中,静态文件(例如图像和样式表)遵守 ASP.NET 授权。例如,如果禁用了对静态文件的匿名访问,匿名用户则不能使用文件系统网站中的静态文件。但在 HTTP 位置中创建网站项目时,IIS 提供不使用授权规则的静态文件。
具体参见vs的msdn:
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_vwdcon/html/31d4f588-df59-4b7e-b9ea-e1f2dd204328.htm


源地址:http://www.cnblogs.com/wolfdzq/articles/470647.html

原文地址:https://www.cnblogs.com/edisonfeng/p/2433420.html