31

当我尝试在 mvc 4 中运行我的脚手架视图之一时,出现以下错误:

“/”应用程序中的服务器错误。没有为扩展“.cshtml”注册构建提供程序。您可以在 machine.config 或 web.config 的部分中注册一个。确保它具有包含值“Web”或“All”的 BuildProviderAppliesToAttribute 属性。

我发现的唯一答案与智能感知有关,但我的代码很好地遵守并在运行时中断。这是一个奇怪的错误,因为我没有使用类库。只有一个控制器在其所有视图上提供此消息,所有其他控制器/视图都可以正常工作。

4

8 回答 8

65

这为我解决了这个问题。

改变这个Web.config

<compilation debug="true" targetFramework="4.5.1" optimizeCompilations="true" />

<compilation debug="true" targetFramework="4.5.1" optimizeCompilations="false" />

补充:几分钟后我将 web.config 恢复为旧时,问题不再重复。奇怪的东西 )

于 2015-08-26T14:35:32.607 回答
16

如果Razor 编译器警告/错误 - ASP.NET MVC 4中的解决方案无法通过将以下代码添加到 ROOT web.config

<compilation debug="true" targetFramework="4.0">
  <!-- New -->
  <assemblies>
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>

然后尝试重新启动 Visual Studio。这对我有用,因此建议可能是 Visual Studio 错误。

于 2014-03-13T10:13:27.243 回答
4

更新到 VS2013 RC2 后,我在部署(以前工作的站点)时遇到此错误。幸运的是,我有其他网站可以比较 bin 文件夹 - 原来有几个库之前部署并神奇地停止了,包括 razor 库。我将它们的引用Copy Local属性更改为True,这一切都更好了。有问题的 3 个剃须刀库是:

  • System.Web.Razor
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor

我还丢失了在 web.config 文件中引用其名称空间的库,因此请务必将它们也设置为复制本地。

我怀疑有可能使用 GAC 在服务器上解决这个问题,但我对服务器端的事情知之甚少,所以下次再说。

于 2014-06-04T15:46:35.967 回答
3

单击“重建解决方案”对我来说就足够了

于 2015-04-24T08:45:08.597 回答
3

我修复了一个类似的问题 - 记录在这里:https ://naa4e.codeplex.com/workitem/1

解决方案是我删除了引用并重新添加了 NuGet 包。

问题似乎是该项目最初引用了 MVC4,我猜它位于本地机器上的某个地方(即不是 NuGet 包)。我只是“恢复”了没有正确覆盖项目引用从 4 到 5 的包。

于 2014-10-09T09:22:47.380 回答
3

我通过将 .Net Framework 从当前版本“4.52”更改为“4.6”来解决此问题。如果您右键单击您的项目 -> 属性然后“目标框架”,您可以更改此设置更改当前框架后,我重新构建并且一切正常。

在此之后,我切换回我当前的框架版本,它现在可以工作了。我真的不明白为什么会发生这种情况,但这对我有帮助。

于 2016-04-06T09:08:17.407 回答
2

该问题可能与 ASP.Net 中的 JIT 编译器有关。我们在运行时更改了单个 .cshtml 文件并且没有让应用程序再次工作后,我们在生产服务器上遇到了这个错误。重新启动 Web 应用程序并回收 IIS 应用程序池没有帮助。

只是为了测试,我将其更改targetFramework="4.0"为另一个版本,它立即再次起作用。在我将其更改回初始版本号后,它也再次起作用。我猜这个更改会导致所有 Asp.Net 临时文件的完全重建。

于 2018-03-27T15:21:40.267 回答
1

我尝试重新启动 IIS,删除临时 Internet 文件并更改 Web 配置文件中的编译标记。它们都不适合我。

我通过删除 System.Web.MVC 并将其添加到项目中解决了这个问题。

于 2016-12-30T04:05:25.280 回答