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

我查看了其他post,但似乎没有人回答我的需要。

  • 我在WebMatrix(ASP.NET)中创建了一个空站点
  • 我在VWD 2013中打开了该网站
  • 我点击了F5,它在http://local.com:59833/ContentPage.cshtml等url上运行正常
  • 我转到http://local.com/cscsu_bi/ContentPage.cshtml ,它不适用于下面的错误

    ‘/’应用程序中的服务器错误。

    不提供此类页面。

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

    请求的URL:/cscsu_bi/ContentPage.cshtml

  • web.config文件如下

         

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

谢谢

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

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

 Install-Package Microsoft.AspNet.WebPages 

我在许多机器上设置了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

看看这篇文章。

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

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

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

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

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

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

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

“没有设置默认网页,并且已禁用目录浏览”

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

在我的例子中,我设置了webpages:EnabledappSettingswebpages:Enabledtrue

    

根据post: 网页的function是什么:在MVC 3 web.config中启用 ,这可以防止从Web浏览器直接访问Views文件夹中的文件。