16

我正在尝试使用 Mono 和 XSP4 在我的 Linux 机器上启动 MVC5 网站。它在没有视图的情况下工作,但是当我尝试渲染某些东西时,它会给我带来错误。

这是我的测试代码。请注意,我没有更改任何内容,这基本上是一个没有 EF 或任何其他库的空白站点。只是简单的 MVC5 + Razor。

public ActionResult Index()
{
    // return Content("'sall good"); // works
    return View();
}

System.InvalidOperationException

找不到 Razor 主机工厂类型:System.Web.Mvc.MvcWebRazorHostFactory、System.Web.Mvc、Version=5.0.0.0、Culture=neutral、PublicKeyToken=31BF3856AD364E35

说明:HTTP 500。处理请求时出错。

详细信息:非网络异常。异常来源(应用程序或对象的名称):System.Web.WebPages.Razor。

堆栈跟踪

at System.Web.WebPages.Razor.WebRazorHostFactory.CreateFactory (System.String typeName) [0x00000] in <filename unknown>:0

at System.Collections.Concurrent.ConcurrentDictionary`2+<GetOrAdd>c__AnonStorey3[System.String,System.Func`1[System.Web.WebPages.Razor.WebRazorHostFactory]].<>m__0 () [0x00000] in <filename unknown>:0 

at (wrapper delegate-invoke) System.Func`1<System.Collections.Generic.KeyValuePair`2<string, System.Func`1<System.Web.WebPages.Razor.WebRazorHostFactory>>>:invoke_TResult__this__ ()

...

我尝试将 Version=5.0.0.0 更改为 4.0.0.0 和 3.0.0.0 等,但没有任何效果。我现在仍然遇到同样的错误,大约是 4.0.0.0。

有希望吗?

4

6 回答 6

31

问题在于文件夹Web.config内。参数必须与 MVC 版本完全匹配。/Viewssystem.web.webPages.razor host

例如,如果您有 MVC 5.2.2.0,那么它应该看起来像<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />.

于 2014-09-30T19:10:42.850 回答
6

您项目的 MVC 版本必须与 MvcWebRazorHostFactory 的版本匹配,必须相同。我不得不将版本更改为5.2.3.0(在Views/Web.config文件中)。

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0

如果您不知道您在项目中使用的是哪个版本的 MVC,请转到项目 -> 编辑引用 -> 然后在右侧,在“选定的引用”下向下滚动到System.Web.Mvc应该查看您正在使用的版本的位置. 这就是我在 Xamarin Studio 社区中发现的方式。

于 2016-12-19T12:30:04.210 回答
1

更新软件包并运行代码后,我收到了同样的错误。

错误:System.InvalidOperationException 找不到 Razor 主机工厂类型:System.Web.Mvc.MvcWebRazorHostFactory、System.Web.Mvc、版本=5.2.3.0、文化=中性、PublicKeyToken=31BF3856AD364E35

在“Views”文件夹下的 Web.config 文件中更改 System.Web.Mvc 的更新版本

system.web.webPages.razor

主机 factoryType="System.Web.Mvc.MvcWebRazorHostFactory,System.Web.Mvc,版本=5.2.7.0,文化=中性,PublicKeyToken=31BF3856AD364E35"

我将 System.Web.Mvc 的版本从 5.2.3.0 更改为 5.2.7.0 并执行了代码。

于 2019-02-09T05:21:37.013 回答
0

@stan 解决方案帮助我解决了这个问题。

我在 Mac M1 芯片上使用 Visual Studio。

就我而言,我在 views/web.config 文件中修复了以下内容

<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

<pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <controls>
    <add assembly="System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
  </controls>
</pages>

根据 References > Packages 更新版本,检查那里的版本,然后更新它。

重建项目/解决方案

于 2021-07-21T18:35:25.027 回答
0

这个是为我工作的。我根据我的 Mvc 版本更改了 Views 文件夹中的 Web.config,Mvc 版本为 5.2.3.0。例如。 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

我将版本从 5.2.0.0 更改为 5.2.3.0。

于 2016-05-10T04:50:40.520 回答
-1

就像斯坦说的那样。检查您System.Web.MVC在参考文件夹(在您的项目中)中执行“右键单击>属性”的版本。然后,更新您的/views/web.config.

于 2016-02-13T16:10:57.087 回答