2013-03-22 48 views
3

我遇到了一個非常奇怪的Web應用程序問題。我有一個標記爲「任何CPU」的平臺目標應用程序,但是當我通過IIS運行它時,出現以下錯誤:App_Code正在編譯爲32位模式並放置在Framework64臨時文件中

無法加載文件或程序集'file:/// C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files \ root \ ea146e97 \ e5f133b2 \ App_Code.dsbuukid.dll'或其依賴項之一。試圖加載格式不正確的程序。

它看起來像這個問題是由該DLL被編譯爲32位模式,其中我的IIS服務器是64位只。我已通過在該戴爾上運行corflags.exe工具並獲得以下證實:

Microsoft(R).NET Framework CorFlags Conversion Tool。版本4.0.30319.17929 版權所有(c)Microsoft Corporation。版權所有。

版本:v4.0.30319 CLR部首:2.5 PE:PE32 CorFlags:0x3 ILONLY:1 32BITREQ:1 32BITPREF:0 簽名:0

我可以通過設置工人解決這個進程允許32位應用程序,但我更願意修復這個問題並允許應用程序以64位模式運行。

我試過刪除我的臨時文件多次,以及重新啓動機器和iis幾百次,但每次dll編譯它在32位模式。

有誰知道這是怎麼發生的?什麼是app_code編譯過程的責任?

回答

5

找到了答案。問題來自visual studio分析工具。他們將以下屬性添加到web.config中的標記

assemblyPostProcessorType =「Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter,Microsoft.VisualStudio.Enterprise.AspNetHelper,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = 「b03f5f7f11d50a3a」

看起來像這個屬性錯誤地將東西編譯到x86