Я реализовал REST Webservice, который возвращает (после аутентификации через RFC 2617 HTTP Digest Authentication) документ XML с ссылками на соответствующие ресурсы.
Вот пример запроса:
http://172.32.42.53:8080/Service.svc/user/123
Результат может выглядеть так:
<?xml version="1.0" encoding="utf-8"?>
<UserList xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<User>
<ID>2</ID>
<UserName>CHI</UserName>
<OutlineLink xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://demo:8080/Service.svc/Users/2/Outline/" cache="no"/>
<SettingsLink xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://demo:8080/Service.svc/Users/2/Settings/" cache="no"/>
<CatalogsLink xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://demo:8080/Service.svc/Users/2/Catalogs/" cache="no"/>
<LastName>Test</LastName>
</User>
</UserList>
Итак, проблема сейчас такова:
Если пользователь вызывает веб-сервис через IP-адрес, первое рукопожатие будет происходить по IP-адресу, а не по имени DNS.Таким образом, аутентификация работает только в том случае, если второй вызов (к указанному ресурсу) снова будет выполнен по IP-адресу.Я попытался сделать это с помощью следующей команды:
OperationContext.Current.IncomingMessageProperties.Via.ToString();
Но мой веб-сервис всегда возвращает DNS сервера, а не "вызываемый адрес".
Есть ли возможность получить вызываемый адрес?Так что я могу динамически возвращать вызываемый адрес (IP или DNS).Было бы здорово получить решение.Относительные URL не разрешены для ссылок.
Спасибо за помощь!