C#和Razor - 您已请求的页面类型未被提供,因为它已被明确禁止。扩展名“.cshtml”可能不正确

时间:2014-03-07 10:48:43

标签: c# razor

我查看过其他帖子,但似乎没有人回答我的需要。

  • 我在WebMatrix(ASP.NET)中创建了一个空站点
  • 我在VWD 2013中打开了该网站
  • 我点击了F5,它在http://local.com:59833/ContentPage.cshtml
  • 等网址上运行良好
  • 我转到http://local.com/cscsu_bi/ContentPage.cshtml,但无法解决以下错误

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

    此类网页未投放。

    描述:未提供您请求的页面类型,因为它已被明确禁止。扩展名“.cshtml”可能不正确。请查看下面的网址,确保拼写正确。

    请求的网址:/cscsu_bi/ContentPage.cshtml

  • web.config文件如下

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
    <add key="webpages:Enabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
</configuration>

我在Windows 7上。有什么明显的我做错了吗?

由于

6 个答案:

答案 0 :(得分:8)

我错过了Microsoft.AspNet.WebPages NuGet包。安装它解决了我的问题。 (此包依赖Microsoft.Web.InfrastructureMicrosoft.Web.Razor,因此包含它们)

如果您使用NuGet控制台,只需输入:

Install-Package Microsoft.AspNet.WebPages

答案 1 :(得分:5)

我在很多机器上设置了Razor,并且经常发现我需要在我的bin文件夹中包含以下DLL:

  • System.Web.Razor.dll
  • System.Web.WebPages.Deployment.dll
  • System.Web.WebPages.dll
  • System.Web.WebPages.Razor.dll
  • Microsoft.Web.Infrastructure.dll

答案 2 :(得分:1)

看看这篇文章。

http://www.asp.net/web-pages/overview/more-resources/aspnet-web-pages-(razor)-troubleshooting-guide

这在修复了所有IIS设置和引用后修复了我的问题。

确保您网站的根目录中至少包含一个.cshtml文件。

答案 3 :(得分:1)

这可能不是您的确切问题,但我发生这种情况有几个原因:

  1. 服务器上的不正确的框架:确保目标框架 项目由服务器支持。只是改变了 编译元素的targetFramework属性可能不是 足够的,因为您的项目的DLL可能会被编译 反对4.5框架。

  2. 应用程序池的不正确框架:如果发生这种情况,也会发生这种情况 您的应用程序池未使用正确的.Net CLR版本。使 确定它使用的是4.0而不是2.0

答案 4 :(得分:1)

在我的案例中,罪魁祸首是Global.asax被置于&#39; / Views&#39;夹。当项目针对MVC3时,这在某种程度上起作用。一旦解决方案升级到MVC4,运行所述解决方案将导致上述错误。同样,其他错误也会提到:

&#34;未设置默认网页且已禁用目录浏览&#34;

解决方案:升级到MVC4 +之后,我不得不在容器项目的根文件夹下手动移动Global.asax。请务必检查Global.asax以确保其中应用的命名空间是正确的。只是我的2c。

答案 5 :(得分:1)

在我的情况下,我在webpages:Enabled下将true设置为appSettings

<appSettings>
  <add key="webpages:Enabled" value="false" />
</appSettings>   

根据发布的内容:what is the function of webpages:Enabled in MVC 3 web.config,这将阻止从Web浏览器直接访问Views文件夹中的文件。