Частичное использование 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, но, возможно, это будет другой вопрос.