删除子应用程序的web.config中的自定义绑定元素

时间:2012-05-01 17:37:53

标签: wcf jsonp custom-binding

我有一个在http://example.com运行的WCF服务(.NET 3.5)应用程序;它的web.config配置为JSONP编码:

<extensions>
  <bindingElementExtensions>
    <add name="jsonpMessageEncoding" type="My.SharePoint.WebServices.JsonpBindingExtension, My.SharePoint.WebServices, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </bindingElementExtensions>
</extensions>

其中类My.SharePoint.WebServices.JsonpBindingExtension是应用程序的一部分。

现在,我们正在http://example.com/other-services/部署另一个WCF应用程序,这是我遇到问题的地方 - 当我尝试调用此服务时,我收到错误,它无法加载My.SharePoint.WebServices程序集,即使我没有在其他应用程序中使用它。看起来顶级应用程序的web.config与此web.config合并。

有没有办法在此子应用程序中删除/取消注册jsonpMessageEncoding

我希望做类似的事情:

<extensions>
  <bindingElementExtensions>
    <remove name="jsonpMessageEncoding"/>
  </bindingElementExtensions>
</extensions>

但此配置部分没有remove

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您的新应用程序直接部署在第一个应用程序Web配置确实合并。遗憾的是,扩展无法删除 - 即使相关的配置类也不支持除add方法之外的任何内容,原因是首先处理对add的调用,并且在到达预期的删除之前已经解析了类型。

作为解决方法(未经测试),您可以尝试使用location element in your root application web.config并仅为根应用程序定义扩展。