Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Razor主机工厂错误_Asp.net_Asp.net Mvc_Razor_Asp.net Webpages - Fatal编程技术网

Asp.net Razor主机工厂错误

Asp.net Razor主机工厂错误,asp.net,asp.net-mvc,razor,asp.net-webpages,Asp.net,Asp.net Mvc,Razor,Asp.net Webpages,我在尝试运行我的应用程序时遇到MvcWebRazorHostFactory错误,但它根本不是MVC应用程序。我通过nuget安装了以下web软件包: Microsoft ASP.NET Razor Microsoft ASP.NET Web API 2.1 Microsoft ASP.NET Web Pages 我的应用程序是angularjs前端,使用razor视图(.cshtml)。我不明白为什么我总是犯这个错误 An exception of type 'System.InvalidOp

我在尝试运行我的应用程序时遇到MvcWebRazorHostFactory错误,但它根本不是MVC应用程序。我通过nuget安装了以下web软件包:

Microsoft ASP.NET Razor
Microsoft ASP.NET Web API 2.1
Microsoft ASP.NET Web Pages
我的应用程序是angularjs前端,使用razor视图(.cshtml)。我不明白为什么我总是犯这个错误

An exception of type 'System.InvalidOperationException' occurred in System.Web.WebPages.Razor.dll but was not handled in user code

Additional information: Could not locate Razor Host Factory type: System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35
下面是my web.config中的razor部分:

<system.web.webPages.razor>
<host factoryType="System.Web.WebPages.Razor.WebRazorHostFactory, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.WebPages.WebPage">
  <namespaces>
    <add namespace="System.Web.Configuration" />
    <add namespace="System.Web.Optimization" />
    <add namespace="System.Web.Routing" />
  </namespaces>
</pages>


显然,我从nuget获得的某个软件包在Views文件夹中添加了一个web.config。在此web.config中有MvcWebRazorHostFactory的设置。我想这是在我使用对话框向项目添加视图时发生的


解决方案是从视图文件夹中删除web.config。

我通过将
System.web.Mvc.MvcWebRazorHostFactory、System.web.Mvc
版本设置为
5.2.0.0
解决了这个问题,最终成功了!为什么
5.2.0.0
与NuGet Microsoft ASP.NET project的版本相同。

因此,
/Views/Web.Config
中的行应该是:

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

为了让在OSX上使用Xamarin Studio v5.5.3开发ASP.NET MVC 5 web应用程序的人受益,删除/Views/web.config对我无效,并导致其他错误

要修复它,请打开/Views/Web.config并将5.2.0.0的所有实例更改为5.2。2.0


更多详细信息

我在一个MVC项目中的Razor.cshtml页面中,在一些NuGet包管理/升级之后,开始出现这个错误


我不想将
Web.config
文件完全从
视图
文件夹中删除,因为我自定义了它的宽度(一些

将MvcWebRazorHostFactory的版本更改为System.Web.Mvc的同一版本,解决了我的问题。

有几个答案指向正确的方向,但我不确定在Microsoft Visual Studio for Mac界面的何处可以找到用于
factoryType
属性的版本部分的适当版本号

对于Mac用户的其他VS,答案是只需右键单击解决方案资源管理器中“软件包”列表中的
Microsoft.AspNet.Mvc
软件包


在我的例子中,包更新后的包版本是“5.2.6”,因此我将
factoryType
属性的版本部分设置为
version=5.2.6.0
。这就解决了问题。

这件事今天发生在我身上。我只是确保views文件夹中web.config的版本号与解决方案的web.config的版本号匹配

希望这有帮助

  • 在Web项目中,打开“引用”树节点。
  • 查找“Assemblies”文件夹并打开它
  • 查找System.Web.Mvc,右键单击它,然后选择“属性”
  • 将出现一个对话框,仔细阅读软件包
    全名
    字段并查找版本号。例如,我有一个:

    System.Web.Mvc,版本=5.2.7.0,文化性=中性,PublicKeyToken=31bf3856ad364e35

    因此,在Web.config(内部视图文件夹)中,替换版本号

    就我而言,它最初是:

    现在我有(查看版本值):


    希望有帮助

    对于拥有Visual Studio 2019的MacBook用户,您只需转到Web.config文件并将System.Web.Mvc的版本更新到Nuget packages文件夹中的版本即可。

    您能详细说明一下吗?我也有同样的问题。是否从视图/web.config中删除了一些行?你改变版本号了吗?谢谢我把它完全移除了。这对我不起作用。获取
    找不到Razor主机工厂类型:System.Web.Mvc.MvcWebRazorHostFactory,System.Web.Mvc,版本=5.2.0.0,区域性=中性,PublicKeyToken=31BF3856AD364E35
    确定。。事实证明,NuGet Microsoft ASP.NET版本现在是5.2.2.0。因此,在将上述版本更改为5.2.2.0之后,它就开始工作了。将该版本设置为正在使用的System.Web.Mvc版本。这是在/Views目录中的Web.config中,对吗?这是最好的答案,主要是因为“为什么”部分。只需检查您的AspNet.Mvc包版本,使用它,它就会工作。谢谢!将“3.0.0.0”更改为“5.2.2.0”对Monodevelop有效。