我只是创建一个新的MVC 4 Web API项目,并创建一个新的.cshtml文件,其中包含非常简单的HTML:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title></title>
</head>
<body>
<div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
打开URL时,将显示以下错误:
'/'应用程序中的服务器错误.
此类页面不会提供.
描述:未提供您请求的页面类型,因为它已被明确禁止.扩展名".cshtml"可能不正确.请查看下面的网址,确保拼写正确.
请求的URL:/index.cshtml
我在一位同事的开发机器上测试了这个场景(完全相同的项目).它按预期工作.所以我想配置或某些安装肯定有问题.但在哪里搜索?本地IIS和Visual Studio Development Server都不起作用.
UPDATE
直接访问.cshtml文件不适用于生产代码 - 仅用于培训目的!导航到/Home/Index完美的工作.所以没有别的,这显然是错的.只是直接访问.cshtml文件.
Dar*_*rov 59
更新2:
我终于明白了你想要实现的目标.对不起我最初不理解.我没有仔细阅读你的问题.您正在尝试直接访问该~/Views文件夹之外的Razor页面.
在ASP.NET MVC 4中,默认情况下禁用此选项.要启用它,您只需在web.config中调整以下设置:
<add key="webpages:Enabled" value="true" />
Run Code Online (Sandbox Code Playgroud)
false当您使用任何模板创建新的ASP.NET MVC 4项目时,默认值为.所以我猜你的同事已经这样做,如果你说它可以在他的电脑上运行.
原版的
您不应直接请求.cshtmlASP.NET MVC应用程序中的文件.这些是位于~/Views文件夹中的视图.它们无法直接访问.您需要相应的控制器操作.
例如,假设您有以下控制器:
public class HomeController: Controller
{
public ActionResult Index()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
然后~/Views/Home/Index.cshtml使用您问题中显示的内容定义视图.
现在,当你运行你的应用程序,你可以浏览到/Home/Index将执行Index的动作Home控制器和渲染相应的视图.
我建议你阅读一些关于ASP.NET MVC的入门教程,以便熟悉基本的最基本概念.
更新1:
阻止对.cshtml文件~/Views夹内~/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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36107 次 |
| 最近记录: |