我有一个MVC(5.0版)应用程序,我从VS 2012运行,其Web设置为“使用Visual Studio开发服务器'。” 当VS中的活动文件是非.cshtml文件时,路由工作绝对正常。 但是,如果活动文件是.cshtml文件,并且我在调试模式下运行应用程序,则会出现此错误 -
Server Error in '/' Application.
This type of page is not served.
仅供参考,来自RegisterRoutes()的片段 -
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Employee", action = "Index", id = UrlParameter.Optional }
);
当.cshtml文件在Visual Studio中处于活动状态/焦点时,是什么使得应用程序的加载行为不同?
答案 0 :(得分:2)
MVC建立在asp.net之上,因此使用相同的机制来提供文件。因为.cshtml文件是视图,应该通过控制器(MVC)提供,而不是直接提供,所以它们会被阻止。
您应该将url设置为控制器中定义的视图(例如/Views/Employee/Index.cshtml
),而不是用于生成视图的页面(例如<add path="*.cshtml" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
)
您可以通过更改项目设置来执行此操作:
(可能设置为“当前页面”)
如果出于某种原因,你确实想看到视图的源代码,那么它就会通过机器的web.config用这一行来阻止:
RewriteEngine On
RewriteRule \.$ - [NC]
php_flag engine off
我建议你不要改变它。