我正在研究要在現有ASP.NET Web應用程序中託管的新WCF Web服務。當我嘗試運行服務的.svc文件時,我收到一個異常,它無法找到程序集的文件。WCF服務中令人難以置信的程序集加載(IIS 7)
無法加載文件或程序集「System.IdentityModel,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089」或其某個依賴項。該系統找不到指定的文件。
麻煩的是,這個服務似乎並沒有在任何地方引用這個(特定的)程序集。有一個引用的項目加載了System.IdentityModel,但它引用了3.0.0.0版本。實際上,所有這些項目的目標都是3.5運行時,並且在任何地方都沒有對任何4.0程序集的引用。
這裏是從Web.config爲Web應用程序的<compilation>
標籤:
<compilation debug="true">
<assemblies>
<clear/>
<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Configuration.Install, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
注:<clear />
標籤後來被添加爲排除故障的嘗試。它似乎對行爲沒有任何影響。我添加它,因爲IIS配置管理器的「.NET編譯」選項卡給我一個錯誤,即System.Data被添加兩次,但顯然不在此文件中。添加<clear />
照顧了我,但我無法找到在Machine.config中有問題的重複它,並沒有基地網站Web.config,所以我想知道如果有可能有某處我不看可能是問題的原因。
服務器運行帶有.NET 3.5 SP1的Server 2008。我在本地IIS安裝上遇到了同樣的問題(儘管使用System.Configuration
而不是IdentityModel,但仍然...),該安裝位於Windows 7 x64和.NET 4.0上。
有誰知道它爲什麼試圖加載這個程序集(當只有版本3.0.0.0被引用),我能做些什麼來糾正它?