【问题标题】:ASP.NET MVC 404 Error for SubDirectories子目录的 ASP.NET MVC 404 错误
【发布时间】:2014-05-20 08:44:16
【问题描述】:

我在我的 asp.net mvc 应用程序中添加了一个自定义 404 页面。除了一些已从 MVC 路由引擎中排除的路径外,它的效果非常好。您可以想象,我希望我的 404 页面也适用于这些 URL。

所以问题是:我可以在 IIS 中添加一些设置,以便将其指向 404 页面的端点。

谢谢!

【问题讨论】:

    标签: asp.net-mvc iis http-status-code-404


    【解决方案1】:

    不,IIS 上没有任何自定义设置。

    为我工作。我在 web.confg 中设置了以下设置

    我的 RegisterRoutes 方法如下

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

    【讨论】:

    • 好吧,我提到了这不起作用的 URL 被明确排除在路由引擎之外。这是因为我在这些目录中有不需要由 asp.net mvc 处理的静态内容......但是,当发生 404 时,我仍然希望使用 asp.net mvc 404 页面。
    【解决方案2】:

    我最终写了一个StaticContentController,它只是打开一个文件流并将其返回给浏览器。该路径由路由引擎严格控制以避免安全问题,并且被大量缓存。

    关于文件流的注释,当我第一次实现它时,我使用了 MVC 的 return File(... 方法,但是在文件流传输时会锁定文件,所以我有一些文件争用的实例同时服务。这就是为什么我切换到返回FileStream,这样我就可以传递正确的文件共享选项,允许文件被另一个进程写入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      • 2014-01-04
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 2016-07-30
      • 2012-12-08
      相关资源
      最近更新 更多