ASP.NET MVC4路由问题与缓存,清单文件

时间:2012-10-07 19:33:58

标签: asp.net asp.net-mvc routing

我想自动生成cache.manifest文件。因此,我创建了一个可由/ OfflineSupport / Manifest访问的控制器和操作。一切正常。内容正确传递。

现在我想在调用cache.manifest时注册此操作。这就是我添加新路线的原因。我的RegisterRoutes方法如下所示:

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}
    );

    routes.MapRoute("cache.manifest", "cache.manifest", new { controller = "OfflineSupport", action = "Manifest" });
}

我的网站在localhost:7365 /下运行。当我调用localhost:7365 / cache.manifest时,我得到一个404.0,其中包含以下详细信息: 模块:IIS Web Core,消息:MapRequestHandler,handler:StaticFile,errorcode:0x80070002。

从未调用过该动作。有什么建议可以改变以获得正确的路由吗?

3 个答案:

答案 0 :(得分:7)

可以修改web.config以包含:

<modules runAllManagedModulesForAllRequests="true"/>

这将允许路由中的句点和非查询字符串定义的(?)参数。

答案 1 :(得分:0)

定义的路线顺序也很重要。

尝试将自定义路由移到默认路由声明之上。

答案 2 :(得分:0)

似乎期间是问题所在。每当我映射到包含句点的路径时,ASP.NET MVC都会尝试查找物理文件。当我删除期间一切正常。 因此,似乎不可能做我想做的事情,并且我将在未来没有时间段的情况下映射到路线。