0

我正在编写一个 .Net Web 服务,它将取代旧的。为了不破坏现有客户端,我不能更改界面。这意味着没有 WSE 可以访问此 Web 服务。

“旧”网络服务直接访问数据库。

“新”不直接访问数据库,它使用另一个网络服务来做到这一点。该其他 Web 服务已被其他一些应用程序使用。

因此,基本上,我在另一个(私有)Web 服务之前编写了一个(公共)Web 服务。

让我们将新的公共 Web 服务称为“Front”,将现有的私有 Web 服务称为“Back”。

问题是“Back”需要 WSE2 身份验证,而“Front”需要在没有 WSE2 的情况下可访问。

如何在 web.config 中配置它?我有这样的 microsoft.web.services2 部分和 soapExtensionTypes 部分:

<microsoft.web.services2>
  <diagnostics>
     <trace enabled="true" input="InputTrace.log" output="OutputTrace.log" />
  </diagnostics>
  <policy>
     <cache name="policyCache.config" />
  </policy>

  <webServices>
     <soapExtensionTypes>
        <add type="Microsoft.Web.Services2.WebServicesExtension, Microsoft.Web.Services2, Version=2.0.0.0,  [.....] />
     </soapExtensionTypes>
  </webServices>

我需要那些符合“Back”,但是调用“Front”的客户也需要符合 WSE2,女巫我不想要。

有什么帮助吗?

4

1 回答 1

2

终于自己找到了答案,它在策略文件中。我必须为不同的策略定义不同的端点。类似的东西:

<?xml version="1.0" encoding="utf-8"?>
<policyDocument xmlns="http://schemas.microsoft.com/wse/2003/06/Policy">
  <mappings xmlns:wse="http://schemas.microsoft.com/wse/2003/06/Policy">
     <!-- calls to this web services will use wse -->
     <endpoint uri="http://the.service.that.needs.wse2.asmx">
        <defaultOperation>
           <request policy="#Sign-Username" />
           <response policy="" />
           <fault policy="" />
        </defaultOperation>        
     </endpoint>
    <!-- no policies for other endpoints -->
    <defaultEndpoint>
      <defaultOperation>
      </defaultOperation>
    </defaultEndpoint>
  </mappings>
  <policies [...]>
    [...]
  </policies>
</policyDocument>

现在我想找到如何动态配置端点 uri,但这可能是另一个问题。

于 2011-06-23T15:26:44.050 回答