面对“无法加载文件或程序集'System.Web.Http.WebHost,Version = 4.0.0.0,'或其中一个依赖项。”

时间:2017-05-10 23:39:31

标签: asp.net-mvc-4 asp.net-web-api iis-8 system.web.http

我正在尝试在服务器上部署MVC Web API解决方案。该服务器具有Windows 2012 R2操作系统。这是基于MVC 4的Web API解决方案。 服务器安装了.Net 4.0框架。除了这台服务器机器外,该解决方案已经部署并正常运行。注意:其他计算机已安装Visual Studio。

我的问题在于 - 无论我使用哪种方法,无论是解决方案本身还是发布解决方案,它都无法正常工作并提供以下错误。

无法加载文件或程序集'System.Web.Http.WebHost,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。系统找不到指定的文件

说明:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.IO.FileNotFoundException:无法加载文件或程序集'System.Web.Http.WebHost,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或者它的依赖关系。系统找不到指定的文件。

堆栈跟踪说: [FileNotFoundException:无法加载文件或程序集'System.Web.Http.WebHost,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该系统找不到指定的文件。]    OSCARService.WebApiApplication.Application_Start()+ 0

[HttpException(0x80004005):无法加载文件或程序集'System.Web.Http.WebHost,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该系统找不到指定的文件。]    System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context,HttpApplication app)+544    System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext context,MethodInfo [] handlers)+186    System.Web.HttpApplication.InitSpecial(HttpApplicationState状态,MethodInfo []处理程序,IntPtr appContext,HttpContext上下文)+172    System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext context)+402    System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+343

[HttpException(0x80004005):无法加载文件或程序集'System.Web.Http.WebHost,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该系统找不到指定的文件。]    System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+579    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+112    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)+716

我尝试在框架目录中找到此文件(System.Web.Http.WebHost)但无法找到此特定文件。

我想知道这个文件是否必须是物理上可用的?

我也尝试将System.Web.Http DLL设置为"CopyLocal='True'"但不起作用。

我已经尝试在这里寻找类似的情况/问题 - 答案,但无法真正得到任何指示。

如果有人能就我的问题提出指示,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

检查已部署项目的bin文件夹。它应该包含System.Web.Http.WebHost.dll。如果此dll位于此文件夹中,请检查版本。如果它不是4.0.0.0,那么您应该部署版本4.0.0.0。如果你正在使用nuget包,请检查你的packages.config如果安装了正确的版本,请检查你的web.config。

希望这有帮助

答案 1 :(得分:0)

我通过重新安装NuGet包修复了这个问题,该包纠正了破坏的依赖关系。从包管理器中,尝试运行此命令

  

更新 - 打包Microsoft.AspNet.WebApi -reinstall