首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AssemblyBinding BindingRedirect不适用于在serviceModel中配置的行为。(周转基金)

AssemblyBinding BindingRedirect不适用于在serviceModel中配置的行为。(周转基金)
EN

Stack Overflow用户
提问于 2011-11-25 09:33:08
回答 1查看 718关注 0票数 0

我们有很多web应用程序,它们使用依赖于在web.config中声明的sectionHandlers的自定义部分(在它们的machine.config中)进行配置。

由于这些sectionHandlers有几个版本,希望使用新sectionHandlers的应用程序必须通过在web.config中使用标记<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">强制“程序集重定向”。我们确实不能修改sectionHandlersmachine.config中的声明,只要还有其他应用程序使用最古老的版本。

绑定重定向对于使用前面提到的标记由应用程序加载的所有程序集都很好--除了包含用于在web.config的system.serviceModel部分中定义WCF行为的类型的程序集。

例如,我们的一些应用程序正在使用名为mainframeFormatter的自定义行为扩展(参见后面示例中的web.config )。当将包含类型为bindingRedirect的程序集的1.1.0.0版本中的mainframeFormatter添加到1.2.0.0版本时,我们将得到以下错误:

创建System.serviceModel/behaviors的配置节处理程序时发生了错误:扩展元素“大型机表单”无法添加到该元素中。验证扩展是否已在system.serviceModel/extensions/behaviorExtensions.的扩展集合中注册

请注意,我们只存在“行为”而不是“绑定”的问题。这是WCF行为的绑定重定向的预期行为还是一个bug?

下面是使用绑定重定向时无法解析的web.config示例:

代码语言:javascript
复制
<system.serviceModel>
  <extensions>
    <behaviorExtensions>
      <add name="mainframeFormatter"
              type="Framework.Communication.Mainframe.ClientEndpointBehaviorExtensionElement,
                       Framework.Communication.Mainframe, Version=1.1.0.0, Culture=neutral,
                       PublicKeyToken=f510307097254a31"/>
    </behaviorExtensions>
    <bindingExtensions>
      <add name="mainframeBinding" 
              type="Framework.Communication.Mainframe.BindingCollectionElement,
                       Framework.Communication.Mainframe, Version=1.1.0.0, Culture=neutral,
                       PublicKeyToken=f510307097254a31"/>
    </bindingExtensions>
  </extensions>

  <behaviors>
    <endpointBehaviors>
      <behavior name="ClientEndpointBehavior">
        <mainframeFormatter />  <--- Problem is on parsing this with assemblyBinding enabled
      </behavior>
    </endpointBehaviors>
  </behaviors>

  <bindings>
    <mainframeBinding>
      <binding name="MyCustomBinding"/>
    </mainframeBinding>
  </bindings>

</system.serviceModel>

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Framework.Communication.Mainframe"
                               publicKeyToken="f510307097254a31" />
      <bindingRedirect oldVersion="1.1.0.0" newVersion="1.2.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

我知道更改behaviorExtension设置中的版本可以解决这个问题。但我很好奇为什么重定向不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-30 12:29:32

他们很快就会提供一个修补程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8267062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档