单声道MVC5 - 视图不起作用

时间:2014-04-21 17:18:35

标签: c# asp.net-mvc mono xsp xsp4

我正在尝试使用Mono和XSP4在我的Linux机器上启动MVC5网站。它适用于没有视图,但是当我尝试渲染它时,它会给我带来错误。

这是我的测试代码。请注意,我没有改变任何东西,这基本上是没有EF或任何其他库的空白站点。只是赤裸裸的MVC5 + Razor。

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

System.InvalidOperationException

     

找不到Razor Host Factory   类型:System.Web.Mvc.MvcWebRazorHostFactory,System.Web.Mvc,   Version = 5.0.0.0,Culture = neutral,PublicKeyToken = 31BF3856AD364E35

     

描述:HTTP 500.Error处理请求。

     

详细信息:非Web异常。异常来源(应用程序或对象的名称):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。

有希望吗?

6 个答案:

答案 0 :(得分:22)

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

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

答案 1 :(得分:4)

项目的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版本,请转到Project - &gt;修改参考 - &gt;然后在右侧,在#34;选择参考文献&#34;向下滚动到System.Web.Mvc,应该在哪里查看您正在使用的版本。这就是我在Xamarin工作室社区中发现的。

答案 2 :(得分: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。

答案 3 :(得分:0)

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

错误:System.InvalidOperationException 无法找到Razor主机工厂类型:System.Web.Mvc.MvcWebRazorHostFactory,System.Web.Mvc,版本= 5.2.3.0,区域性=中性,PublicKeyToken = 31BF3856AD364E35

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

  

system.web.webPages.razor

     
    

host factoryType =“ System.Web.Mvc.MvcWebRazorHostFactory,System.Web.Mvc,Version = 5.2.7.0,Culture = neutral,PublicKeyToken = 31BF3856AD364E35”

  

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

答案 4 :(得分: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>

根据参考 > 包更新版本,检查那里的版本,然后更新它。

重建项目/解决方案

答案 5 :(得分:-1)

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

中更新该行
相关问题