我尝试运行我的应用程序时遇到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>
答案 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
程序包。
在我的情况下,软件包更新后的软件包版本为“ 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)
将出现一个对话框,仔细阅读软件包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" />
希望有帮助!