Razor Host Factory错误

时间:2014-02-10 23:55:09

标签: asp.net asp.net-mvc razor asp.net-webpages

我尝试运行我的应用程序时遇到MvcWebRazorHostFactory错误,但它根本不是MVC应用程序。我通过nuget安装了以下Web包:

Microsoft ASP.NET Razor
Microsoft ASP.NET Web API 2.1
Microsoft ASP.NET Web Pages

我的应用是使用剃刀视图(.cshtml)的angularjs前端。我不明白为什么我一直收到这个错误。

An exception of type 'System.InvalidOperationException' occurred in System.Web.WebPages.Razor.dll but was not handled in user code

Additional information: Could not locate Razor Host Factory type: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35

这是我的web.config中的剃刀部分:

<system.web.webPages.razor>
<host factoryType="System.Web.WebPages.Razor.WebRazorHostFactory, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.WebPages.WebPage">
  <namespaces>
    <add namespace="System.Web.Configuration" />
    <add namespace="System.Web.Optimization" />
    <add namespace="System.Web.Routing" />
  </namespaces>
</pages>

9 个答案:

答案 0 :(得分:35)

我通过将System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc版本设置为5.2.0.0解决了这个问题,最终确实有效!为什么5.2.0.0与NuGet Microsoft ASP.NET项目版本相同。

因此,/Views/Web.Config中的行应为:

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

答案 1 :(得分:15)

为了在OSX上使用Xamarin Studio v5.5.3开发ASP.NET MVC 5 Web应用程序的任何人的利益,删除 /Views/Web.config 对我不起作用并创建其他错误。

要解决此问题,请打开 /Views/Web.config 并将5.2.0.0的所有实例更改为5.2。 2 .0

更多详情here

答案 2 :(得分:6)

几个答案都指向正确的方向,但是我不确定在Microsoft Visual Studio for Mac界面的哪个位置可以找到用于factoryType属性的版本部分的适当版本号。 / p>

为了使其他VS for Mac用户受益,答案是只需在解决方案资源管理器的“程序包”列表中右键单击Microsoft.AspNet.Mvc程序包。

version number display

在我的情况下,软件包更新后的软件包版本为“ 5.2.6”,因此我将factoryType属性的版本部分设置为Version=5.2.6.0。这样就解决了问题。

答案 3 :(得分:3)

显然,我从nuget获得的一些软件包将一个web.config添加到Views文件夹中。在这个web.config中有MvcWebRazorHostFactory的设置。我认为这是在使用对话框将View添加到我的项目时发生的。

解决方案是从Views文件夹中删除web.config。

答案 4 :(得分:2)

在一些NuGet包管理/升级之后,我开始在MVC项目的Razor .cshtml页面中收到此错误。

我不想完全从Web.config文件夹中删除Views文件,因为我已经为其定义了一些<add namespace="..." />个元素。但我注意到<host factoryType="..." /> 中的Version = ...没有匹配我的System.Web.Mvc版本(在对象浏览器中检查过的版本)。

更改此版本号以匹配我的System.Web.Mvc程序集以及重新启动Visual Studio ,修复了我的问题(由Daniel建议)

答案 5 :(得分:2)

将MvcWebRazorHostFactory的版本更改为解决了我的问题的相同版本的System.Web.Mvc。

答案 6 :(得分:1)

对于拥有Visual Studio 2019的MacBook用户,您只需转到Web.config文件并将System.Web.Mvc的版本更新为Nuget包文件夹中的版本即可。

答案 7 :(得分:0)

今天这件事发生在我身上。我只是确保views文件夹中的web.config的版本号与解决方案的web.config的版本号匹配。

希望这会有所帮助。

答案 8 :(得分:0)

  1. 在您的Web项目中,打开“参考”树节点。
    1. 寻找“程序集”文件夹并打开它。
    2. 寻找System.Web.Mvc,右键单击它,然后选择“属性”

将出现一个对话框,仔细阅读软件包full name字段并查找版本号。例如,我有一个:

System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

因此,在Web.config(视图文件夹中的内部)中替换版本号!

就我而言,它最初是:

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

现在我拥有了(查看“版本”值):

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

希望有帮助!