Частичное использование WSE2 - PullRequest
0 голосов
/ 23 июня 2011

Я кодирую веб-сервис .Net, который заменит старый. Чтобы не сломать существующих клиентов, я не должен менять интерфейс. Это означает, что нет WSE для доступа к этому веб-сервису.

«Старый» веб-сервис обращался напрямую к базе данных.

«Новый» не имеет прямого доступа к базе данных, для этого используется другой веб-сервис. Этот другой веб-сервис уже используется некоторыми другими приложениями.

Итак, я пишу (публичный) веб-сервис перед другим (частным) веб-сервисом.

Пусть называют новый общедоступный веб-сервис «Фронт», а существующий частный веб-сервис «Назад».

Проблема в том, что «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, а я не хочу.

Любая помощь?

1 Ответ

2 голосов
/ 23 июня 2011

Наконец-то нашел ответ myselft, он в файле политики.Я должен был определить разные конечные точки для разных политик.Примерно так:

<?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, но, возможно, это будет другой вопрос.

...