ASP.NET MVC 3 RouteExistingFiles = true 似乎没有效果

编程代码

1个回答

写回答

小陌131

2025-06-24 00:15

+ 关注

XML
XML

ASP.NET MVC 3: RouteExistingFiles = true 似乎没有效果

在ASP.NET MVC 3中,我们可以使用RouteExistingFiles属性来控制路由系统是否要处理静态文件请求。当设置为true时,路由系统会尝试匹配路由来处理静态文件请求。然而,有时候我们会发现设置RouteExistingFiles为true似乎没有产生预期的效果。本文将探讨这个问题,并提供解决方案。

问题分析

当我们设置RouteExistingFiles为true时,我们期望路由系统能够处理静态文件请求。然而,有时候我们会发现即使设置了这个属性,静态文件请求仍然被IIS处理,而不是通过路由系统。

解决方案

要解决这个问题,我们需要对web.config文件进行一些更改。在元素下,我们需要添加一个名为handlers的元素,并在其中添加一条名为BlockViewHandler的handler。

下面是一个示例代码:

XML

<system.webServer>

<handlers>

<add name="BlockViewHandler" path="*.cshtml" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />

</handlers>

</system.webServer>

通过这个更改,我们告诉IIS在处理.cshtml文件时使用System.Web.HttpNotFoundHandler来处理请求。这样一来,静态文件请求就会被路由系统处理,而不是被IIS处理。

案例代码:

csharp

public class HomeController : Controller

{

public ActionResult Index()

{

return View();

}

public ActionResult About()

{

return View();

}

}

标题一:问题分析

在设置RouteExistingFiles为true时,我们期望路由系统能够处理静态文件请求。然而,有时候我们会发现即使设置了这个属性,静态文件请求仍然被IIS处理,而不是通过路由系统。

标题二:解决方案

要解决这个问题,我们需要对web.config文件进行一些更改。在元素下,我们需要添加一个名为handlers的元素,并在其中添加一条名为BlockViewHandler的handler。

通过以上的解决方案,我们可以确保在设置了RouteExistingFiles为true后,静态文件请求能够被路由系统处理。这对于ASP.NET MVC 3应用程序的开发和部署非常重要。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号