2

我有一个在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这个配置部分没有。

有任何想法吗?

4

1 回答 1

0

如果您的新应用程序直接部署在第一个应用程序下,则确实合并了 Web 配置。不幸的是,扩展不能被删除——即使相关的配置类不支持除了 add 方法之外的任何东西,原因是 add 的调用将首先被处理,并且在达到预期的删除之前已经解析了类型。

作为解决方法(未经测试),您可以尝试在根应用程序 web.config 中使用 location 元素,并仅为根应用程序定义扩展。

于 2012-05-02T08:30:40.863 回答