13

我剛剛上傳了一個Asp.Net Web Api 2.2項目到生產服務器,我得到了標題中指出的錯誤。無法加載文件或程序集System.Web.Http,版本= 5.2.2.0

在我的web.config我已經有這樣的:

<dependentAssembly> 
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" /> 
    </dependentAssembly> 

文件並在bin存在。什麼會造成這種情況?
我所有的Asp.Net Web API文件都是最新的,並顯示版本5.2.2。它可以在我的開發機器上正常工作。

回答

12

System.Web.HttpSystem.Web.Http.WebHost程序集的屬性中設置Copy Localtrue並重新部署程序包。

如果這完全不能解決您的問題,請嘗試重新安裝NuGet軟件包。這將有望糾正錯誤的依賴關係。從包管理控制檯,運行以下命令:

Update-Package Microsoft.AspNet.WebApi -reinstall 

務必安裝System.Web.Http.WebHost爲好。

+1

重新安裝它爲我做了。 – 2015-12-17 19:32:35

+0

沒有爲我工作 – 2017-10-26 16:45:26

0

如果您在GAC中擁有不同版本的程序集,它將始終加載,而不是從bin文件夾中加載的。

+0

這簡直是不真實的。他發佈的dependentAssembly配置確保了這一點。 – 2014-12-02 16:32:11

+0

這是事實並非如此。如果您在GAC中有一個程序集,而在文件系統中有另一個程序集,名稱和公鑰,請儘可能地嘗試,即使是加載其字節,但您始終會從GAC加載該程序集。嘗試一下。 – 2014-12-02 16:47:31

3

對於我來說,從 「解決方案資源管理」 我查了一下 「System.Web.Http」 這是5.2.3.0的版本,所以我改:

<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" /> 

<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.3.0" /> 

再建。它爲我工作!

+1

這對我有效! – Roboblob 2016-07-13 14:28:35

-3

另一種方式來做到這一點,它不需要一個新的版本或更新/重新利用的NuGet是在做的config.web如下:

對於你有問題,隨着該DLL,執行以下操作:

&lt;bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="5.2.2.0"&gt; 

今天我有一個問題,而這個小調整解決它......

0

我跑進了完全相同的錯誤。這是由我用來部署將Web.config替換爲以前版本的應用程序的腳本引起的。 Web.config指定了System.Web.Http的錯誤版本。刪除該步驟解決了問題。

相關問題