如果对于没有扩展名的路径,我如何确保调用自定义虚拟路径提供程序?
例如,如果我在控制器中执行此操作,则不会执行我的提供程序:
return View("Home");
但如果我这样做,就会被称为:
return View("Home.cshtml");
答案 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());