我在开发一个新的WCF web服务,该服务将托管在现有的ASP.NET web应用程序中。当我尝试运行服务的.svc文件时,会出现一个异常,无法找到一个程序集的文件。
“无法加载文件或程序集'System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'其中之一。系统找不到指定的文件。”
问题是,这个服务似乎没有任何地方引用这个(特定的)程序集。有一个已引用的项目加载了System.IdentityModel,但是它引用的是版本3.0.0.0。事实上,所有这些项目都针对3.5运行时,并且没有对任何4.0程序集的引用。
以下是Web.config的标记:
注意:
服务器运行 Server 2008 并安装了 .NET 3.5 SP1。我在本地的 IIS 安装上也遇到了同样的问题(虽然是关于 System.Configuration 而不是 IdentityModel,但仍然...),我的本地 IIS 安装在 Windows 7 x64 上,使用的是 .NET 4.0。 有人知道为什么它要尝试加载这个程序集(当只引用版本 3.0.0.0)以及我可以做什么来纠正它吗?
“无法加载文件或程序集'System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'其中之一。系统找不到指定的文件。”
问题是,这个服务似乎没有任何地方引用这个(特定的)程序集。有一个已引用的项目加载了System.IdentityModel,但是它引用的是版本3.0.0.0。事实上,所有这些项目都针对3.5运行时,并且没有对任何4.0程序集的引用。
以下是Web.config的标记:
<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,所以我想知道是否有其他地方可能是问题的原因。服务器运行 Server 2008 并安装了 .NET 3.5 SP1。我在本地的 IIS 安装上也遇到了同样的问题(虽然是关于 System.Configuration 而不是 IdentityModel,但仍然...),我的本地 IIS 安装在 Windows 7 x64 上,使用的是 .NET 4.0。 有人知道为什么它要尝试加载这个程序集(当只引用版本 3.0.0.0)以及我可以做什么来纠正它吗?