Dot-Net
Autofac 錯誤:無法載入文件或程序集 ‘System.Web.Http, Version=5.2.0.0,…’ 我的項目是 Owin WebApi2 SelfHost
我有一個使用 Microsoft.AspNet.WebApi.OwinSelfHost 的簡單項目。這是一個 Owin 自託管的 WebApi 2 項目。該項目非常類似於:-
https://github.com/attilah/AngularJSAuthentication
我唯一的區別是我的安全模組在單獨的程序集中(一切都類似於上面的項目)。我使用 Autofac 來解決我的依賴關係。
該項目在沒有 Autofac 時有效。但是,一旦我嘗試使用相應的安全模組和 Autofac 設置我的項目,我所面臨的就是這個錯誤:-
Could not load file or assembly 'System.Web.Http, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)我的配置非常受此執行緒的啟發:-
依賴注入不適用於 Owin 自託管 Web Api 2 和 Autofac
此外,我發現其他人正在為 Autofac 的這個依賴錯誤而苦苦掙扎,並且能夠通過重新安裝 Microsoft.AspNet.WebApi.WebHost 來解決類似的問題:
Web API 2 和 .NET 4.5.1 遷移後不存在 GlobalConfiguration.Configure()
但這對我不起作用,我不知道為什麼。我嘗試從頭開始重新安裝所有內容也無濟於事。除了 Autofac 在重新安裝時還有幾個權限問題之外。
有人對此錯誤有任何經驗嗎?請幫忙。謝謝!
在上述執行緒中@user998660 的評論的幫助下,我設法解決了這個依賴問題。
我所做的是:
- 我在項目的引用中右鍵點擊了程序集 System.Web.Http。
- 我注意到我的項目引用的程序集版本是
5.2.3.0- 從上面的錯誤我知道 Autofac 正在嘗試引用 System.Web.Http version
5.2.0.0。我需要一種方法來告訴我的應用程序使用較新的版本5.2.3.0而不是5.2.0.0.這是我需要添加到我的 Web.config
<assemblyBinding>部分的內容:<dependentAssembly> <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.3.0" /> </dependentAssembly>