2012-09-02 143 views
6

也許相關信息:我有一個使用.net 4.5構建的Web應用程序。我想部署到Azure的網站,但它只支持.net 4.0,因此我將該項目降級爲.net 4.0。 它在本地運行時仍然有效。無法加載文件或程序集「System.Net.Http」或其某個依賴項

當我發佈到Azure中,我得到這個錯誤:

Could not load file or assembly 'System.Net.Http' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

我試圖用的NuGet移除網頁API和readding它,因爲另一個問題上的SO建議,但我仍然有同樣的問題。
我已經試過關閉/打開VS,並清理/構建。

+0

它抱怨[AssemblyVersion]不匹配。 System.Net。Http只支持.NET 4.5,所以應該成爲問題的一部分。 –

+0

@HansPassant它似乎自動添加,如果我將Web API添加到我的項目,這是由.NET 4.0,對吧?它似乎本地運行良好......不知道如何讓它在Azure上運行。 – Kyle

+0

如何右鍵點擊nuget添加的參考文獻,選擇屬性並設置「copy local」爲true? – spender

回答

0

System.NET.HTTP.dll只依賴於System.dll,System.Core.dll和mscorlib.dll。

請確保您的部署包中包含此DLL(System.NET.HTTP.dll)(您可以執行RDP連接並檢查部署文件夾)。使用「複製到本地」屬性的引用,或將此dll包含在您的項目的根級別上,並在屬性中設置類型「內容」。

此外System.Net.Http.dll也支持.NET 2.0,因爲我看到 - 這可能會導致問題。所以除了上面的嘗試設置屬性的參考「特定版本」=真

3

我解決了類似的問題(System.Web.Http和System.Net.Http.Formatting)錯誤,通過刪除對問題引用的引用(它指向我的.Net安裝文件夾),並將其替換爲由Microsoft.AspNet.WebApi NuGet軟件包安裝的我的軟件包文件夾中的參考文件。

+0

我在'.. \ packages \ Microsoft.AspNet.WebApi.Client.5.2.3 \ lib \ net45 \ System.Net.Http.Formatting.dll'中發現缺少的依賴項('System.Net.Http.Formatting') 。 –

0

Azure Now在配置選項卡上支持.Net 4.5,您可以選擇.Net框架版本V3.5或V4.5我有幾個MVC Web應用程序,其中包含許多支持DLL,全都在V4.5中編譯。 Azure不支持的是V 4.5.1(來自VS 2013 RC發行版)。

2

我有同樣的問題。但是,單獨更新程序集版本,複製本地和特定版本設置並不能解決我的問題。在我的應用程序配置中,我將一個web和一個輔助角色部署到雲服務中。創建服務後,在配置選項卡上,將操作系統設置爲Windows Server 2012 R2以獲得對.Net Framework 4.5.1的支持。但錯誤仍然發生。

經過進一步研究,我發現我的雲服務的* .cscfg文件覆蓋了門戶網站設置,使用一個不明顯的osFamily設置爲「3」。當我開始我的項目時,它是在MVC3上,並沒有WebAPI和框架4.5.1。 osFamily 3是當時最新的。

在我的最新部署中,我將站點升級到了4.5.1框架和MVC5。我驗證了它在本地開發機器上的工作。但是,在部署之後,沒有找到引用System.Net.Http.Formatting版本4.0.0.0的錯誤,它不起作用。我後來看到顯示源錯誤的部署日誌

「上載軟件包所需的名爲NetFx451的功能在爲部署選擇的OS *中不可用。」

這裏是博客文章,導致我的解決方案,將osFamily設置更改爲4.然後我的網站在全新部署後工作。

http://tech.trailmax.info/2014/02/azure-deployment-the-feature-named-netfx451-that-is-required-by-the-uploaded-package-is-not-available-in-the-os-chosen-for-the-deployment/

相關問題