有没有一种方法可以阻止对MVC 3 beta 1中的Razor View 的访问(404)?当我创建一个全新的空白站点(IIS7),然后从浏览器而不是404访问/views/home/index.cshtml时,我得到了
[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应用程序
互联网应用程序( Razor )
F5
导航到/views/home/index.cshtml
最佳答案
我是ASP.NET团队的开发负责人,负责ASP.NET MVC 3和ASP.NET Web Pages和Razor。
这在ASP.NET MVC 3 RC中不是完全固定的,但在ASP.NET MVC 3 RTM中将完全固定的。
在ASP.NET MVC 3 RC或更早版本中,没有发生“非常糟糕”的情况:可能发生的最糟糕的情况是,有人可以检测到您的应用程序中是否存在 View -但他们无法使其运行(由于该怪异异常)。这是一个轻微的安全问题,因为它是信息公开的一种形式,但这不是一个非常严重的问题。
在ASP.NET MVC 3 RTM中,〜/Views/...中的所有Razor View 以及MVC区域内的所有Razor View 都被100%阻止,并且将无法由浏览器直接运行。它们只能作为MVC View 页面运行。
关于asp.net-mvc - ASP.NET MVC 3 Beta 1阻止对Razor View 的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3921678/