我正在构建一个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,但这也没有用。
非常感谢任何帮助!
答案 0 :(得分:0)
所以这个问题最终导致"失踪" dll丢失,因为在发布版本发生时没有被复制到bin文件夹中。我找到了this相关问题,我使用了答案中的建议。
TLDR;基本上我修复它的方法是手动复制每个dll,因为它说它丢失并跟踪你必须移动的那些;在我的情况下,它是4个dll。
在它没有抛出相同的"失去"异常通过项目引用下拉列表,在属性选项卡中找到" Copy Local"并为每个缺少的引用设置为True。
要验证它是否符合预期,请右键单击该项目,然后单击“卸载”。然后再次右键单击该项目并编辑csproj文件。找到您缺少的参考文献,并在&#34; Hint路径&#34;确保它有一个<Private>True</Private>
字段。重新加载项目,确保它构建然后再次尝试发布版本,dll现在应该在bin文件夹中。