C# 单声道MVC5-视图不';行不通

C# 单声道MVC5-视图不';行不通,c#,asp.net-mvc,mono,xsp,xsp4,C#,Asp.net Mvc,Mono,Xsp,Xsp4,我正在尝试使用Mono和XSP4在我的Linux机器上启动MVC5网站。它在没有视图的情况下工作,但是当我尝试渲染某些东西时,它会给我带来错误 这是我的测试代码。请注意,我没有更改任何内容,这基本上是一个没有EF或任何其他库的空白站点。只需裸骨MVC5+剃须刀即可 public ActionResult Index() { // return Content("'sall good"); // works return View(); } System.InvalidOpera

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

这是我的测试代码。请注意,我没有更改任何内容,这基本上是一个没有EF或任何其他库的空白站点。只需裸骨MVC5+剃须刀即可

public ActionResult Index()
{
    // return Content("'sall good"); // works
    return View();
}
System.InvalidOperationException异常

找不到Razor主机工厂 类型:System.Web.Mvc.MvcWebRazorHostFactory、System.Web.Mvc、, 版本=5.0.0.0,区域性=中性,PublicKeyToken=31BF3856AD364E35

描述:HTTP 500。处理请求时出错

详细信息:非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__ ()

...
位于System.Web.WebPages.Razor.WebRazorHostFactory.CreateFactory(System.String typeName)[0x00000]中:0
位于System.Collections.Concurrent.ConcurrentDictionary`2+c_uAnonStorey3[System.String,System.Func`1[System.Web.WebPages.Razor.WebRazorHostFactory]].m_u0()[0x00000]in:0
at(包装器委托调用)System.Func`1:invoke\u TResult\uuuuuu this\uuuuuuuuu()
...
我尝试将Version=5.0.0.0更改为4.0.0.0和3.0.0.0等,但没有任何效果。我刚才仍然得到相同的错误,大约是4.0.0.0


还有希望吗?

问题出在
/Views
文件夹中的
Web.config
system.web.webPages.razor
host
参数必须与MVC版本完全匹配


例如,如果您有MVC5.2.2.0,那么它应该像Stan所说的那样。检查您的
System.Web.MVC
版本,在您的参考文件夹(项目中)执行“右键单击>属性”。然后,在您的
/views/web.config
中更新该行。这一行适合我。 根据我的Mvc版本,我将Views文件夹中的Web.config更改为Mvc版本5.2.3.0。 例如,


我将版本从5.2.0.0更改为5.2.3.0

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



在更新包并运行代码后,我收到了相同的错误

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

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

system.web.webPages.razor

host 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,并执行了代码。

您是否尝试过:sudo apt get install asp.net-examples@DavidCrowell不,恐怕他们没有意义,因为他们已经3岁多了。它们展示了MVC2的工作原理。我从git获得mono,并从源代码处编译,因为官方网站落后了。智能库中的mono也是一个非常旧的版本。你们有log4net设置吗?TypeFactory(在WebRazorHost中引用)使用log4net。有些人向mono提交了拉取请求以使MVC5正常工作,您应该编译mono并包含这些拉取请求,以查看它们是否有帮助,如果有,请在拉取请求上添加“+1”(这将有望加快审查过程)@knocte我找不到该拉取请求。我想它被删除了。本周,我试着用git最新的mono再次测试它,但看起来它一点也没动。这里是我的测试项目顺便说一句:有几个版本的问题和答案都在堆栈溢出。。不过,正如您实际指出的位置一样,这一个是最好的,这样人们就可以将外部的一个与视图中的一个进行比较,以防外部配置中存在版本覆盖。谢谢!在我的例子中,VSMac将
Microsoft.AspNet.Mvc
包更新为
5.2.7
,但没有触及
Views/
文件夹下的
Web.config
文件,该文件夹的版本为
5.2.3
<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0