我有一个针对.NET 4.0框架的 ASP.NET 网站应用程序,该应用程序使用 WSE 3.0 (Microsoft.Web.Services3.dll) 公开一些 Web 服务以确保安全。当我使用该服务时,我收到SoapHeaderException: SOAP header Security was not理解错误。当应用程序以 .NET 2.0 为目标时,我有一个非常相似的设置工作正常,并且我比较了配置文件而没有发现任何差异。
使用Reflector我可以看到Microsoft.Web.Services3.dll引用System.Web.Services, Version=2.0.0.0但是当我使用Fuslogvw.exe(程序集绑定日志查看器)检查程序集绑定时,我看到在框架中找到了版本重定向配置: 2.0.0.0 重定向到 4.0.0.0。我检查了各种机器级别的配置文件,并且没有明确引用重定向,所以我相当确定重定向是由于链接到程序集的 Microsoft Publisher Policy造成的。我尝试使用publisherPolicy 元素使用下面显示的配置来防止这种重定向,但它似乎没有任何影响。我还尝试将 publisherPolicy 元素移到dependentAssembly 元素之外,使其普遍适用,但这也无济于事。
任何想法我做错了什么或强制程序集绑定到程序集的特定版本的替代方法?
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Services, Version=2.0.0.0" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<publisherPolicy apply="no" />
</dependentAssembly>
</assemblyBinding>
</runtime>