【发布时间】:2010-10-13 07:47:32
【问题描述】:
有没有办法阻止对 MVC 3 beta 1 中 Razor 视图的访问 (404)?当我创建一个全新的空白站点 (IIS7) 然后从浏览器访问 /views/home/index.cshtml 时,我得到的不是 404
[InvalidCastException: Unable to cast object of type 'ASP.Index_cshtml' to type 'System.Web.IHttpHandler'.]
System.Web.WebPages.WebPageHttpHandler.CreateFromVirtualPath(String virtualPath, VirtualPathFactoryManager virtualPathFactoryManager) +56
System.Web.WebPages.WebPageRoute.DoPostResolveRequestCache(HttpContextBase context) +253
System.Web.WebPages.WebPageHttpModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e) +89
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
默认情况下,views 文件夹中的 web.config 文件设置为阻止所有文件请求,但显然这个请求仍然通过。
重现步骤:
文件 -> 新建项目
ASP.NET MVC 3 Web 应用程序
Internet 应用程序 (Razor)
F5
导航到 /views/home/index.cshtml
【问题讨论】:
-
您能提供完整的堆栈跟踪吗?
-
更新了完整的堆栈跟踪和重现步骤。
-
谢谢,我可以确认这是一个有效的错误。
-
如果忽略 global.asax 中的路由会发生什么? routes.IgnoreRoute("{resource}.cshtml/{*pathInfo}");
-
我已经尝试过了,但没有任何改变。