ASP.NET MVC Framework 依赖于 URL 路由。为了利用 URL 路由,可能不得不在 Web 服务器上执行额外的配置步骤。这些步骤取决于 Internet Information Services (IIS) 的版本和应用程序的请求处理模式。
IIS 的最新版本是版本 7.0。IIS 的此版本包括在 Windows Server 2008 中。还可以在除 Home Basic 以外的任何 Vista 操作系统上安装 IIS 7.0(请参见 http://technet.microsoft.com/en-us/library/cc732624.aspx)。
IIS 7.0 支持两种模式的处理请求。可以使用集成模式或经典模式。以集成模式使用 IIS 7.0 时不需要执行任何特殊配置步骤。但是以经典模式使用 IIS 7.0 时需要执行额外的配置。
Microsoft Windows Server 2003 包含 IIS 6.0。在使用 Windows Server 2003 操作系统时不能将 IIS 6.0 升级为 IIS 7.0。使用 IIS 6.0 时必须执行其他配置步骤。
Microsoft Windows XP Professional 包含 IIS 5.1。使用 IIS 5.1 时必须执行其他配置步骤。
最后,Microsoft Windows 2000 和 Microsoft Windows 2000 Professional 包含 IIS 5.0。使用 IIS 5.0 时必须执行其他配置步骤。
以下是不同 IIS 版本的总结:
IIS 7.0(集成模式)– 使用 URL 路由不需要特殊配置。
IIS 7.0(经典模式)– 需要执行特殊配置才能使用 URL 路由。
IIS 6.0 或更低版本– 需要执行特殊配置才能使用 URL 路由。
集成模式和经典模式
IIS 7.0 可以使用两种请求处理模式处理请求:集成模式和经典模式。集成模式可提供更好的性能和更多的功能。经典模式用于向早期的 IIS 版本提供向后兼容性。
请求处理模式由应用程序池决定。通过确定与应用程序关联的池,可以确定特定的 Web 应用程序使用何种处理模式。执行以下步骤:
请注意,可以在 Edit Application 对话框中修改请求处理模式。单击 Select 按钮并更改与应用程序关联的应用程序池。需要注意的是在将 ASP.NET 应用程序从经典模式更改为集成模式时,存在兼容性问题。更多详细信息,请参阅以下文章:
在 Windows Vista 和 Windows Server 2008 上将 ASP.NET 1.1 升级为 IIS 7.0 -- http://learn.iis.net/page.aspx/270/upgrading-aspnet-11-to-iis7-on-windows-vista--windows-server-2008/
ASP.NET 与 IIS 7.0 集成 - http://learn.iis.net/page.aspx/243/aspnet-integration-with-iis7/
如果 ASP.NET 应用程序使用DefaultAppPool,则不需要执行任何额外的步骤就可以让 URL 路由(即 ASP.NET MVC)正常工作。然而,如果将 ASP.NET 应用程序配置为使用 Classic .NET AppPool,则请继续阅读本教程,还有更多的工作要做。
在早期的 IIS 版本上使用 ASP.NET MVC
如果需要在早于 IIS 7.0 的 IIS 版本上使用 ASP.NET MVC,或者需要在经典模式下使用 IIS 7.0,则有两个选项可供选择。第一,修改路由表以使用文件扩展名。例如,不使用 URL /Store/Details,而是使用 URL /Store.aspx/Details。
第二个选项是创建通配符脚本映射。通配符脚本映射可以将每个请求映射到 ASP.NET Framework。
如果无权访问 Web 服务器(例如,ASP.NET MVC 应用程序由 Internet Service Provider 托管),则需要使用第一个选项。如果不想修改 URL 的内容,但有权访问 Web 服务器,则可以使用第二个选项。
我们将在下面的部分中详细讨论这两个选项。
创建通配符脚本映射
如果不想修改用于 ASP.NET MVC 应用程序的 URL 的内容,但有权访问 Web 服务器,则可以使用另一个选项。可以创建通配符映射,将所有请求映射到 ASP.NET Framework 的 Web 服务器。通过这种方法,可以在 IIS 7.0(经典模式)或 IIS 6.0 上使用默认的 ASP.NET MVC 路由表。
请注意,此选项将导致 IIS 解析每个向 Web 服务器发出的请求。这包括对图像、经典 ASP 页面和 HTML 页面的请求。因此,启用到 ASP.NET 的通配符脚本映射确实关系到性能问题。
以下是在 IIS 7.0 上启用通配符脚本映射的方法:
总结
本教程的目的是解释如何在使用早期版本的 IIS(或经典模式的 IIS 7.0)的同时使用 ASP.NET MVC。我们讨论了让 URL 路由与早期版本的 IIS 协同工作的两种方法:修改默认的路由表或创建通配符脚本映射。
第一种方法要求修改 ASP.NET MVC 应用程序中使用的 URL。此方法的优势在于不需要访问 Web 服务器就可以修改路由表。这意味着由 Internet 代理公司代理 ASP.NET MVC 应用程序时可以使用此方法。
第二种方法是创建通配符脚本映射。此方法的优势在于不需要修改 URL。第二种方法的不利之处在于它可能影响 ASP.NET MVC 应用程序的性能。