无法加载文件或程序集“System.Web.Http.WebHost,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'

时间:2014-10-23 17:28:25

标签: asp.net-mvc-4

在Visual Studio 2012中,我创建了一个ASP.NET MVC 4项目,其中目标框架是.NET Framework 4.5。当我将项目部署到Web服务器时,它出现以下错误:

    Could not load file or assembly 'System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file 
specified.

Description: An unhandled exception occurred during the execution of the current web request.
 Please review the stack trace for more information about the error and where
it originated in the code. 

Exception Details: System.IO.FileNotFoundException: Could not load file or 
assembly 'System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral,
 PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
 The system cannot find the file specified.

Source Error: 


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34237

8 个答案:

答案 0 :(得分:28)

我在部署期间今天遇到了同样的问题。我能够通过标记要复制到部署文件的程序集来修复它。

为了做到这一点,在我的Visual Studio项目中,选择参考文献中的System.Web.Http.Webhost程序集并更改“复制本地”'属性为True。我不得不为其他一些缺失的装配重复这个。

感谢此网站提供的提示 - http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx/

答案 1 :(得分:22)

检查已部署项目的bin文件夹。它应该包含System.Web.Http.WebHost.dll。 如果此dll在此文件夹中,请检查其版本。如果它不是4.0.0.0,那么您应该部署版本4.0.0.0或更改您的Web配置以使用其他版本(由于依赖性,这不是一个好主意)

答案 2 :(得分:11)

尝试重新安装Microsoft.AspNet.WebApi包。打开包管理器控制台并键入:

Update-Package Microsoft.AspNet.WebApi -reinstall

请注意,此命令将删除所有依赖项,您必须手动安装它们。

答案 3 :(得分:4)

我有一个旧项目的错误,我回去做一些工作。事实证明该项目实际上并没有使用WebApi,因此我使用NuGet卸载了Microsoft.AspNet.WebApi。这解决了我的问题。

如果我真的需要WebApi,我确定再次安装它也会修复错误。

答案 4 :(得分:0)

我在设置新的Team City Build Agent后遇到了这个问题。新代理没有安装MVC 4,可能是问题的一部分。幸运的是,我发现this article引导我找到解决方案。在Team City中,我刚刚更新了Nuget Restore的Build Step,因此它没有使用本地缓存。

enter image description here

这是有效的,因为缓存可能已由已安装了不同(MVC)框架的构建运行程序建立。

答案 5 :(得分:0)

我知道这已得到解答,但我想我会添加一些东西。

每次我在文件中将“copy local”设置为true导致错误时我会发布它并获得另一个错误。所以我只选择了引用下的所有文件并将它们全部设置为true。这为我解决了这个问题。

答案 6 :(得分:0)

重要说明:可能是因为您要将4.5项目部署到未安装4.0的服务器而导致出现此错误消息。确保在IIS中为所需项目安装了.NET Framework版本。默认情况下,其中一些DLL不会复制,因为它通常使用核心项目DLL。检查以确保您的生产服务器具有您要使用的.NET版本。我自己在4.0服务器上使用4.5项目来体验这一点。

答案 7 :(得分:0)

确保在您的服务器上安装了ASP.NET MVC 4。在以下位置进行检查-

C:\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET MVC 4