我正在构建一个WebApi端点,并在本地对其进行了测试,运行良好。我已经在服务器上安装了它,并将另一个服务指向它,但当它试图发送请求时,我得到了一个运行时错误。当我检查端点所在的事件查看器时,发现以下错误:
Exception type: InvalidOperationException
Exception message: The pre-application start initialization method PreAppStart on type Microsoft.Web.Mvc.ViewEngineFix threw an exception with the following error message: Could not load file or assembly 'System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified..
at System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures)
at System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods)
at System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded)
at System.Web.Compilation.BuildManager.ExecutePreAppStart()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
Could not load file or assembly 'System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
at Microsoft.Web.Mvc.ViewEngineFix.PreAppStart()我已经尝试在web.config中更改版本号,甚至尝试创建一个不受nuget管理的引用目录来保存System.Web.Mvc.dll,但也不起作用。
任何帮助都是非常感谢的!
发布于 2016-06-08 21:34:08
所以问题最终是“丢失的”dll丢失了,因为当发布构建发生时没有被复制到bin文件夹中。我发现了与this相关的问题,并使用了答案中的建议。
TLDR;基本上我修复它的方法是手动复制每个dll,因为它说它丢失了,并跟踪您必须移动的dll;在我的例子中,它是4个dll。
在没有抛出相同的" missing“异常后,查看项目引用下拉列表,在属性选项卡中找到写有"Copy Local”的行,并为每个缺少的引用将该行设置为True。
要验证它是否执行了预期的操作,请右键单击该项目,然后单击unload。然后再次右键单击该项目并编辑csproj文件。找到您丢失的引用,并在“提示路径”下确保它有一个<Private>True</Private>字段。重新加载项目,确保其构建,然后再次尝试发布构建,dll现在应该在bin文件夹中。
https://stackoverflow.com/questions/37701772
复制相似问题