尝试浏览* .cshtml文件时出现“这种types的页面没有送达”错误

我只是创build一个新的MVC 4 Web API项目,并创build一个新的.cshtml文件,其中包含非常简单的HTML:

<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title></title> </head> <body> <div> </div> </body> </html> 

打开URL时,显示以下错误:

“/”应用程序中的服务器错误。

这种types的页面不提供。

说明:您所请求的页面types未被投放,因为它已被明确禁止。 扩展名“.cshtml”可能不正确。 请查看下面的url,并确保拼写正确。

请求的url:/index.cshtml

我在一个同事的开发机器上testing了这个场景(完全一样的项目)。 它按预期工作。 所以我想这个configuration或者一些安装一定是有问题的。 但是在哪里search? 本地IIS和Visual Studio Development Server都不起作用。

UPDATE

直接访问.cshtml文件不适用于生产代码 – 用于培训目的! 导航到/Home/Index工作得很好。 所以没有别的,这显然是错的。 只需直接访问.cshtml文件。

更新2:

我终于明白你要达到的目标。 对不起,我最初不了解。 我没有仔细阅读你的问题。 您正尝试直接访问~/Views文件夹之外的Razor页面。

在ASP.NET MVC 4中,这是默认禁用的。 为了启用它,您只需在web.config中调整以下设置:

 <add key="webpages:Enabled" value="true" /> 

当您使用任何模板创build新的ASP.NET MVC 4项目时,默认值为false 。 所以我想你的同事已经这样做了,如果你说它在PC上运行的话。

原版的

您不应直接在ASP.NET MVC应用程序中请求.cshtml文件。 这些是位于~/Views文件夹中的~/Views 。 他们不是直接访问。 您需要相应的控制器操作。

例如,假设您有以下控制器:

 public class HomeController: Controller { public ActionResult Index() { return View(); } } 

然后用问题中显示的内容定义了~/Views/Home/Index.cshtml视图。

现在当你运行你的应用程序时,你可以导航到/Home/Index ,它将执行Home控制器的Index操作并呈现相应的视图。

我build议你阅读一些关于ASP.NET MVC的入门教程,以便熟悉最基本的基本概念。


更新1:

阻止~/Views文件夹中对.cshtml文件请求的代码位于~/Views/web.config文件中:

 <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <handlers> <remove name="BlockViewHandler"/> <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> </handlers> </system.webServer> 

我遇到了同样的问题,并通过转到客户端的属性和“开始操作”select当前页面来解决问题。 我把它设置为特定的页面。

如果您已启用网页,并且已validation.NET版本有效,那么您的问题很可能是IIS服务器没有可供所有站点共享的razor二进制文件。 要解决它,你应该确保你已经在你的/ bin文件夹中包含mvc二进制文件。 这个链接解释得非常好:
http://www.codeproject.com/Answers/437259/his-type-of-page-is-not-served-CSHTML-how-to-serve#answer1