2

如果路线包含点,我在访问路线时遇到问题。为了重现,创建一个默认的 MVC4 WebApi 应用程序。走默认路线...

routes.MapRoute(
   name: "Default",
   url: "{controller}/{action}/{id}",
   defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

编写控制器如下...

public class HomeController : Controller
{
   public ActionResult Index(string id)
   {
      if (id == null)
      {
         return View();
      }
      else
      {
         return PartialView(id);
      }
   }
}

并在现有的“index.cshtml”旁边创建两个文件“test.cshtml”和“test.menu.cshtml”。

打开 /home/index/test 按预期工作。它带回了“test.cshtml”的内容。

但是,打开 /home/index/test.menu 会返回 404 错误。

为什么会这样?又该如何避免呢?

4

1 回答 1

3

您看到的 404 错误来自 IIS。MVC 路由模块永远无法控制。

将以下选项添加到modules部分的<system.webServer>部分web.config将确保尝试 MVC 路由并应该解决您的问题:

runAllManagedModulesForAllRequests="true"

在我的 web.config 中没有现有modules部分,因此我在该部分中添加了以下行<system.webServer>

<modules runAllManagedModulesForAllRequests="true" />

现在它对我有用。

于 2013-04-06T00:21:42.103 回答