2017-06-16 40 views
0

我有一個針對4.6.1框架並將其作爲雲服務部署的web api項目Azure上。部署時出現以下錯誤。Cloud Service回收錯誤System.IO.FileLoadException:無法加載文件或程序集'System.Web.Http,版本= 4.0.0.0

Web.Config中的細節:

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

錯誤從事件查看器:

角色入口點無法創建:System.TypeLoadException:無法加載由於角色的切入點以下例外: - System.IO.FileLoadException:無法加載文件或程序集「System.Web.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35」或其某個依賴項。定位的程序集清單定義與程序集引用不匹配。 (異常來自HRESULT:0x80131040) 文件名: 'System.Web.Http,版本= 4.0.0.0,文化=中性公鑰= 31bf3856ad364e35'

我沒有System.Web.Http參考,版本= 4.0.0.0在我的解決方案。請讓我知道我做錯了什麼。

回答

1

我們可能從這個blog得到答案。它闡述了根本原因和解決方法。以下是博客的片段。

解決方案:

1)打開位於項目bin文件夾中.dll.config。

2)檢查是否有你需要的BindingRedirect條目。如果沒有,請按照以下兩個選項之一進行操作: a)複製web.config或app.config內容(考慮這兩個配置文件中有一個具有所需的信息)並將其粘貼到.dll.config文件中。 B)手動創建一個集綁定條目:

3)添加.dll.config文件到您的解決方案(同一級別的web.config或app.config)中,並設置複製到輸出目錄屬性爲「複製總是」。

根本原因

通常情況下,當一個新的組件添加到項目中,Visual Studio會自動創建在你的web.config(Web角色)或app.config中一個bindingRedirect進入(工作者角色)只是爲了避免錯誤的彙編版本問題。

但是,在Azure雲服務中,由於WaIISHost(Web角色)和WaWorkerHost(工作者角色)無法讀取這兩個文件,因此來自web.config和app.config的程序集綁定不起作用配置文件,而是讀取.dll.config文件,這是程序集綁定配置需要的文件。

+0

謝謝@ tom-sun-msft。我做了同樣的工作。 – pawanplus

相關問題