类型'System.Web.Mvc.MvcWebRazorHostFactory'的表达式不能用于返回类型'System.Web.WebPages.Razor.WebRazorHostFactory'

Dav*_*ave 41 asp.net-mvc razor asp.net-mvc-3 asp.net-mvc-4

当我尝试运行我接手的项目时,我收到此错误.

我假设我的web.config有问题,但我不知道该找什么.

类型'System.Web.Mvc.MvcWebRazorHostFactory'的表达式不能用于返回类型'System.Web.WebPages.Razor.WebRazorHostFactory'

对此相关的任何建议都非常感谢.

小智 50

尝试在Web.Config中替换行

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Run Code Online (Sandbox Code Playgroud)

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Run Code Online (Sandbox Code Playgroud)

(将MvcWebRazorHostFactory设置为版本4.0.0.0)

  • 使用Install-Package时,Microsoft.AspNet.WebApi.HelpPage -Pre将MvcWebRazorHostFactory设置为5.0.0.0版. (2认同)
  • 请注意,有两个Web.Config文件.我不得不更改项目"Views"目录下的那个,而不是项目根目录下的那个. (2认同)

小智 36

在所有Views/web.config下将MvcWebRazorHostFactory设置为版本5 .0.0.0

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Run Code Online (Sandbox Code Playgroud)

  • 这个对我有用而不是上面的. (2认同)

uki*_*kie 8

对于其他仍然受苦的人,我的解决方案就像上面的那个,但是有一个调整 - 我需要在工程引用中将工厂类型版本与System.Web.Mvc dll的版本匹配.要找出您拥有的版本:

  1. 展开项目中的"参考"
  2. 右键单击System.Web.Mvc并查看版本

    在此输入图像描述

  3. 更新Views文件夹中的 web.config

所以在我的情况下,它如下:

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Run Code Online (Sandbox Code Playgroud)