【问题标题】:Razor Host Factory errorRazor 主机工厂错误
【发布时间】:2014-03-08 13:30:33
【问题描述】:

我在尝试运行我的应用程序时遇到 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>

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 你能详细说明一下吗?我有同样的问题。您是否从 Views/web.config 中删除了一些行?你改版本号了吗?谢谢!
    • 我完全删除了它。
    【解决方案2】:

    我通过将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" />
    

    【讨论】:

    • 这对我不起作用。获取Could not locate Razor Host Factory type: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
    • Ok.. 结果 NuGet Microsoft ASP.NET 版本现在是 5.2.2.0。所以在将上述版本更改为 5.2.2.0 后它就可以工作了。
    • 将版本设置为正在使用的 System.Web.Mvc 的版本。
    • 这是在 /Views 目录中的 Web.config 中,对吧?
    • 这是最好的答案,主要是因为“为什么”部分。只需检查您的 AspNet.Mvc 包版本,使用它就可以了。
    【解决方案3】:

    为了任何在 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

    【讨论】:

    • 谢谢!将“3.0.0.0”更改为“5.2.2.0”适用于 Monodevelop。
    【解决方案4】:

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

    我不想从Views 文件夹中完全删除Web.config 文件,因为我已经自定义了它的宽度一些&lt;add namespace="..." /&gt; 元素。但我注意到 &lt;host factoryType="..." /&gt; 中的 Version=... 与我的 System.Web.Mvc 版本匹配(在对象浏览器中检查版本)。

    更改此版本号以匹配我的 System.Web.Mvc 程序集,并重新启动 Visual Studio,为我解决了问题(如 Daniel 所建议)

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        为了其他 VS for Mac 用户的利益,答案是在解决方案资源管理器的 Packages 列表中右键单击 Microsoft.AspNet.Mvc 包。

        在我的例子中,包更新后的包版本是“5.2.6”,所以我将factoryType属性的版本部分设置为Version=5.2.6.0。这样就解决了问题。

        【讨论】:

          【解决方案7】:

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

          希望这会有所帮助。

          【讨论】:

            【解决方案8】:
            1. 在您的 Web 项目中,打开“参考”树节点。
              1. 查找“Assemblies”文件夹并打开它。
              2. 查找 System.Web.Mvc,右键单击它,然后选择“属性”

            会弹出一个对话框,仔细阅读包full name字段并查找版本号。比如我有这个:

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

            所以,在 Web.config(Views 文件夹)中替换版本号!

            就我而言,它最初是:

            &lt;host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /&gt;

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

            &lt;host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /&gt;

            希望对你有帮助!

            【讨论】:

              【解决方案9】:

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2018-09-19
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-06-17
                • 2013-02-06
                • 2012-10-18
                相关资源
                最近更新 更多