【问题标题】:ASP.NET MVC4 routing issue with cache,manifest file缓存、清单文件的 ASP.NET MVC4 路由问题
【发布时间】:2012-10-07 19:33:58
【问题描述】:

我想自动生成 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,处理程序:StaticFile,错误代码:0x80070002。

并且永远不会调用该操作。有什么建议可以更改以获得正确的路由?

【问题讨论】:

  • 当我在开头移动映射并将 url 更改为缓存(没有清单扩展名)时,它可以工作。所以问题是扩展。如何强制路由不通过 staticfilehandler 服务?

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


【解决方案1】:

可以修改 web.config 以包括:

<modules runAllManagedModulesForAllRequests="true"/>

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 没关系。在开头、两个标准语句之间和结尾都尝试过。
    【解决方案3】:

    看起来好像是期间的问题。每当我映射到包含句点的路由时,ASP.NET MVC 都会尝试查找物理文件。当我删除期间一切正常。 所以似乎不可能做我想做的事,我将映射到未来没有一段时间的路线。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 2011-11-27
      • 2013-01-17
      相关资源
      最近更新 更多