asp.net-mvc - ASP.NET MVC 3 Beta 1阻止对Razor View 的访问

标签 asp.net-mvc asp.net-mvc-3

有没有一种方法可以阻止对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/

相关文章:

asp.net-mvc - 为什么添加 View 列表脚手架向导不使用 "DisplayName"数据注释

javascript - Asp.Net MVC 中相同属性的编辑器和下拉列表

asp.net-mvc - 单元测试 MVC Controller

html - 通过 css 保持语义和事物的可塑性

asp.net-mvc-3 - MVC 如何包含没有布局信息的 View

c# - 通用存储库和事务

asp.net-mvc - 为什么 Visual Studio 代码格式不能正常用于 Razor 标记?

javascript - 使用部分 View 、javascript 和 viewbag foreach 时出错

javascript - 局部 View 和 CSS/Javascript

c# - MVC RouteConfig "CatchAll"{*url} 不工作