尝试浏览* .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