Частичное использование WSE2

Я кодирую веб-сервис.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>

Мне нужно, чтобы они соответствовали "Назад", но тогда клиенты, вызывающие "Фронт", тоже должны соответствовать WSE2, а я этого не хочу.

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

1 ответ

Решение

Наконец-то нашел ответ 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, но, возможно, это будет другой вопрос.

Другие вопросы по тегам