【问题标题】:Facing "Could not load file or assembly 'System.Web.Http.WebHost, Version=4.0.0.0, ' or one of its dependencies." [duplicate]面对“无法加载文件或程序集‘System.Web.Http.WebHost, Version=4.0.0.0,’或其依赖项之一。” [复制]
【发布时间】:2017-05-10 23:39:31
【问题描述】:

我正在尝试在服务器上部署 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' 或其依赖项之一。系统找不到指定的文件

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

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

堆栈跟踪说: [FileNotFoundException:无法加载文件或程序集“System.Web.Http.WebHost,版本=4.0.0.0,文化=中性,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 上下文,HttpApplication 应用程序)+544 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext 上下文,MethodInfo[] 处理程序)+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 上下文)+579 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext 上下文)+112 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +716

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

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

我也尝试将 System.Web.Http DLL 设置为 "CopyLocal='True'",但没有成功。

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

如果有人可以在这里为我的问题提供指导,我将不胜感激。

【问题讨论】:

  • 你在使用Web API 2.2吗?在这种情况下,System.Web.Http.WebHostMicrosoft.AspNet.WebApi.WebHost nuget 包的一部分。请考虑通过Install-Package Microsoft.AspNet.WebApi.WebHost 重新安装此软件包
  • @AjayAradhya:我不确定。在我的 packages.config 行中说:<package id="Microsoft.AspNet.WebApi.WebHost" version="4.0.20710.0" targetFramework="net45" />
  • 在花了很多时间研究之后,我想通过手动方式进行。在我拥有 Visual Studio 的本地计算机上,我从“Packages”目录中找到了 System.Web.Http.WebHost DLL 的引用。我从那个文件夹中复制了 .dll 并粘贴到服务器的 bin 目录中。我很确定必须有办法在外部/没有 Visual Studio 的情况下“重新安装”此类 NuGet 包。但现在我完成了这项工作。如果我发现或遇到这样的实用程序,我会发布我的答案。
  • 我做了一些研究,并尝试在下面的链接中通过 Nuget CLI(命令行界面)安装包。我参考了下面的链接以使其正常工作。 1.docs.microsoft.com/en-ca/nuget/tools/nuget-exe-cli-reference 2.blog.davidebbo.com/2011/01/…

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


【解决方案1】:

我通过重新安装 NuGet 包来解决此问题,该包更正了损坏的依赖项。在包管理器中,尝试运行此命令

更新包 Microsoft.AspNet.WebApi -reinstall

【讨论】:

  • 在我尝试部署服务的服务器机器上没有安装 Visual Studio,您能否提供指导如何重新安装 NuGet 包并更正缺少的依赖项?
  • 这是解决这个问题的最佳方法
【解决方案2】:

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

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2019-03-18
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 2014-02-02
    • 1970-01-01
    相关资源
    最近更新 更多