Razor Host Factory错误

Rya*_*ton 30 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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

这是我的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>
Run Code Online (Sandbox Code Playgroud)

Dan*_*mak 38

我通过将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" />
Run Code Online (Sandbox Code Playgroud)

  • 好的..结果是NuGet Microsoft ASP.NET版本现在是5.2.2.0.所以在将所述版本更改为5.2.2.0后,它正在工作. (4认同)
  • 将版本设置为正在使用的System.Web.Mvc版本. (4认同)
  • 很好,它现在与Mono一起使用.非常感谢! (3认同)
  • 这是最好的答案,主要是因为"为什么"部分.只需检查您的AspNet.Mvc包版本,使用它,它将工作. (2认同)

Smy*_*ian 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

更多细节在这里

  • 谢谢!将"3.0.0.0"更改为"5.2.2.0"适用于Monodevelop. (3认同)

Ott*_*o G 8

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

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

版本号显示

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