当前位置:首页 > 行业动态 > 正文

如何在Windows 2008的IIS7上部署无后缀URL,并正确映射到MVC4应用中?

在Windows Server 2008的IIS7中,部署无后缀URL的MVC4应用时,需要配置URL路由映射。

在Windows 2008 IIS7环境下部署MVC4应用程序时,无后缀URL的部署问题是一个常见的挑战,由于MVC框架生成的URL地址没有文件后缀,IIS默认无法识别这些请求,导致页面无法正常显示,本文将详细介绍如何解决这一问题,包括官方解决方案、配置方法以及常见问题的处理。

Windows 2008 IIS7 无后缀URL部署问题 MVC4 MVC URL映射

1. 问题描述

在Windows 2008 IIS7环境中部署MVC4应用程序时,经常会遇到无后缀URL的问题,由于MVC4开发后生成的URL地址是通过重定向得到的页面,没有后缀,IIS无法识别这些地址,导致无法正确处理请求。

2. 官方解决方案

微软官方提供了处理无后缀URL的补丁,可以解决这个问题,具体步骤如下:

1、下载补丁:从微软官方网站下载补丁文件(下载地址:http://support.microsoft.com/kb/980368)。

2、安装补丁:运行下载的补丁文件,按照提示完成安装。

3、重启服务器:安装完成后,重启服务器以使更改生效。

通过以上步骤,IIS7将能够支持无后缀的重定向页面,无需添加额外的映射。

3. 配置方法

除了使用官方补丁外,还可以通过配置URL重写组件和NuGet包来解决这个问题,以下是详细步骤:

1、安装URL重写组件

下载URL重写组件:从微软官方网站下载URL Rewrite 2.0(下载地址:http://www.iis.net/downloads/microsoft/urlrewrite)。

安装组件:运行下载的文件,按照提示完成安装。

2、配置URL重写规则

导入规则:在IIS管理器中,选择站点,双击“URL重写”图标,打开URL重写模块,右键点击“导入规则…”,选择“在此位置导入规则…”,然后选择下载的重写规则文件(通常为.xml格式)。

应用规则:导入规则后,确保规则处于启用状态。

3、安装Microsoft.AspNet.FriendlyUrls NuGet包

安装包管理器:打开Visual Studio,选择工具 > NuGet包管理器 > 管理解决方案的NuGet程序包。

搜索并安装包:在搜索框中输入“Microsoft.AspNet.FriendlyUrls”,找到并安装该包。

配置路由:在Global.asax文件中调用Routing.RegisterRoutes方法,以启用友好URL功能。

4. 常见问题及解决方法

在配置过程中,可能会遇到以下问题:

1、HTTP错误403.14 Forbidden

解决方法:检查web.config配置文件的配置节,确保<modules>节的值为true,如果配置文件中找不到<modules>节,需要加上<modules runAllManagedModulesForAllRequests="true"/>。

2、无法访问静态文件(如CSS、JavaScript)

解决方法:确保URL重写规则不会影响到静态文件的访问,可以在重写规则中排除对静态文件的处理。

3、应用程序池回收假死

解决方法:对于IIS7.5,可以尝试修改应用程序池的回收设置,或者使用脚本解决回收假死的问题。

FAQs

1、:安装了URL重写组件后,网站仍然无法访问怎么办?

:首先检查URL重写规则是否正确配置,确保规则处于启用状态,检查IIS日志,查看是否有其他错误信息,确保应用程序池的回收设置正确。

2、:使用官方补丁后,是否需要重启服务器?

:是的,安装官方补丁后,需要重启服务器以使更改生效。

3、:如何确保配置后的IIS能够正常处理无后缀URL?

:可以通过测试不同的URL模式,确保所有类型的URL都能被正确处理,监控IIS日志,查看是否有任何异常或错误信息。

通过上述方法和步骤,可以在Windows 2008 IIS7环境下成功部署MVC4应用程序,并解决无后缀URL的问题,这不仅提高了网站的可访问性,也优化了用户体验,希望本文能帮助您更好地理解和解决IIS7部署MVC4时的常见问题。

Win2008 IIS7 无后缀URL部署问题 MVC4 MVC URL映射

1. 问题

在Windows Server 2008上运行的IIS7服务器上,部署MVC4应用程序时,遇到了无后缀URL(如:http://example.com/page 而不是http://example.com/page.aspx)的访问问题。

2. 原因分析

IIS7默认不支持无后缀URL的映射,因此当用户访问无后缀的MVC4应用程序时,IIS会返回404错误,因为找不到对应的文件。

3. 解决方案

3.1. 配置IIS应用程序池

1、打开IIS管理器。

2、找到你的MVC4应用程序。

3、双击应用程序,选择“高级设置”。

4、在“应用程序池身份”下,选择“集成”身份。

5、应用更改。

3.2. 配置IIS URL重写

1、在IIS管理器中,找到你的MVC4应用程序。

2、双击“URL重写”。

3、如果没有URL重写规则,请添加一个新规则。

4、在“规则名称”中输入一个描述性的名称。

5、在“匹配的URL模式”中输入(.*)

6、在“输出处理程序”中输入MVC4ApplicationHandler

7、在“限制访问”中,确保“允许”选项被选中。

8、应用更改。

3.3. 创建MVC4ApplicationHandler

1、在MVC4应用程序的根目录下,创建一个新的文本文件,命名为MVC4ApplicationHandler

2、在该文件中,添加以下内容:

<configuration>
  <system.webServer>
    <handlers>
      <add name="MVC4ApplicationHandler" path="*" verb="*" modules="IsapiModule" scriptProcessor="MVC4ApplicationHandler.exe" resourceType="Unspecified" requireAccess="Script" />
    </handlers>
  </system.webServer>
</configuration>

3、保存文件,并确保文件扩展名为.axd

3.4. 修改应用程序启动方式

1、打开MVC4应用程序的Global.asax 文件。

2、在Application_Start 方法中,添加以下代码:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

4. 验证

完成上述配置后,重新启动IIS服务器,并尝试访问无后缀的URL,如果一切配置正确,应该能够成功访问MVC4应用程序的页面。

5. 注意事项

确保MVC4应用程序已经正确安装在服务器上。

确保MVC4ApplicationHandler.axd 文件存在于应用程序的根目录下。

如果在配置过程中遇到权限问题,请确保IIS_IUSRS 组有适当的权限。

0