【问题标题】:Expression of type 'System.Web.Mvc.MvcWebRazorHostFactory' cannot be used for return type 'System.Web.WebPages.Razor.WebRazorHostFactory'“System.Web.Mvc.MvcWebRazorHostFactory”类型的表达式不能用于返回类型“System.Web.WebPages.Razor.WebRazorHostFactory”
【发布时间】:2013-03-15 02:24:55
【问题描述】:

当我尝试运行我接管的项目时遇到此错误。

我认为我的 web.config 有问题,但我不知道要查找什么。

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

非常感谢您对此提出任何建议。

【问题讨论】:

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 razor


【解决方案1】:

我遇到了同样的错误。什么对我有用: 右键单击您的项目并选择管理 NuGet 包。安装 Microsoft ASP.NET Razor。重建项目。

【讨论】:

    【解决方案2】:

    对于其他仍在受苦的人,我的解决方案与上面的解决方案一样,但有一个调整 - 我需要在您的项目引用中将工厂类型版本与 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" />
    

    【讨论】:

    • 最佳答案。谢谢。
    【解决方案3】:

    在所有 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" />
    

    【讨论】:

    • 我猜这取决于你的版本。 5.0.0.0 为我工作。同上。
    • 谢谢,可以确认您是否遇到此问题,并且您正在运行 mvc5,那么这将是您的修复,同时确保您已将所有网页设置为 3.0.0(使用此发帖作为参考:stackoverflow.com/questions/9403477/…)
    • 这个真的只需要对应System.Web.Mvc的参考版本就可以了。
    【解决方案4】:

    尝试替换 Web.Config 中的行

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

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

    (将 MvcWebRazorHostFactory 设置为版本 4.0.0.0)

    【讨论】:

    • 当使用 Install-Package Microsoft.AspNet.WebApi.HelpPage -Pre set MvcWebRazorHostFactory to version 5.0.0.0.
    • 我还有其他需要修复的地方。就像 Slicksim 建议的那样
    • 我发现打开 References 找到 System.Web.Mvc 并检查 AssemblyVersion(这是要使用的版本号)很有用。否则按照此处的说明进行更改。
    • 请注意,有两个 Web.Config 文件。我必须更改项目“Views”目录下的那个,而不是项目根目录下的那个。
    • 当我从 MVC 3 升级到 4 时这不起作用,但是在花了太长时间试图找到对 factoryType 的缺失引用之后,我放弃并再次升级到 MVC 5。然后我手动将版本从 4.0.0.0 切换到 5.0.0.0,并且成功了!谢谢!现在我的应用无法加载 WebGrease... :-/
    猜你喜欢
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多