自定义虚拟路径提供程序未调用无扩展路径

时间:2011-08-22 16:00:36

标签: c# asp.net asp.net-mvc

如果对于没有扩展名的路径,我如何确保调用自定义虚拟路径提供程序?

例如,如果我在控制器中执行此操作,则不会执行我的提供程序:

return View("Home");

但如果我这样做,就会被称为:

return View("Home.cshtml");

2 个答案:

答案 0 :(得分:1)

您使用的是哪个版本的IIS?您使用的是VirtualPathProvider还是MVC路由?

您需要确保在II6或II7中使用经典模式进行通配符映射。

article应该有助于向您展示在不同版本的IIS中的运行方式。除非请求被路由到ASP.NET,否则您的代码将不会被调用,IIS将只返回404

在IIS7.5中,您可以尝试添加以下配置。这相当于通配符映射,默认情况下应在.NET 4中启用。

<system.webServer>     
  <modules runAllManagedModulesForAllRequests="true">     
   </modules>     
</system.webServer>  

答案 1 :(得分:0)

我最终添加了一个自定义路径引擎,现在一切似乎都在运行

>         private class CustomViewEngine : RazorViewEngine
>         {
>             private static string[] NewPartialViewFormats = new[] {
> "~/Views/Shared/{0}.cshtml" };
> 
>             public CustomViewEngine()
>             {
>                 base.PartialViewLocationFormats =
> base.PartialViewLocationFormats.Union(NewPartialViewFormats).ToArray();
>             }
>         }

在Application_Start中:

        ViewEngines.Engines.Clear();
        ViewEngines.Engines.Add(new CustomViewEngine());