我正在尝试在服务器上部署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'"
但不起作用。
我已经尝试在这里寻找类似的情况/问题 - 答案,但无法真正得到任何指示。
如果有人能就我的问题提出指示,我将不胜感激。
答案 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