【发布时间】: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.WebHost是Microsoft.AspNet.WebApi.WebHostnuget 包的一部分。请考虑通过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.WebHostDLL 的引用。我从那个文件夹中复制了 .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