Как указано в вопросе, мне нужно обработать изменяющееся свойство baseAddress хоста службы WCF.У меня есть простой объект, который содержит двоичное значение изображения.Это будет отправлено с удаленного компьютера (на самом деле множество разных) на сервер через веб-приложение на сервере, которое запрашивает определенное имя файла на основе заданных файлов в базе данных.
Для этого яЯ сделал сервис и реализовал необходимые контракты, но я застрял в элементе baseAddress в файле конфигурации сервиса.
Дилемма заключается в том, что IP-адрес удаленного компьютера является динамическим.Он изменяется примерно с 5-минутными интервалами (предоставленными извне), и машина не является частью VPN или какой-либо (меж) сети и не имеет настроенной DNS.У него только установлено имя компьютера.Однако я могу вытащить IP-адрес этого устройства из таблицы, чтобы предоставить клиентскому приложению «правильный» IP-адрес для привязки, но моя проблема скорее на стороне хоста.
Вопрос в основном- в этом описанном хосте как мне указать baseAddress, к которому будут привязываться клиенты?Я полагаю, что не могу выполнить повторную привязку каждый раз, когда обнаруживается изменение IP-адреса, или это не является проблемой?
Я попытался указать "http://localhost:6090/BasicService/", который был недоступен, когда я пытался позвонить с клиента"http://192.168.0.4:6090/BasicService/". Однако, когда я указываю точный IP-адрес на клиенте и хосте, клиент успешно связывается с хостом.
Обратите внимание, что привязка моей службы - basicHttpBinding, а частные IP-адреса находятся только в тестовой среде.При работе эти устройства получают свои IP-адреса от провайдеров m2m.
РЕДАКТИРОВАТЬ: Для лучшего понимания удаленное устройство будет сервером и содержит информацию о привязке, которая является XYZ, и XYZ - это то, что я пытаюсь выяснить.Клиент может подключиться к локальному компьютеру, чтобы получить IP-адрес определенного удаленного устройства, а затем привязать клиента к данному IP-адресу, но проблема в том, что на хосте я не уверен, что использовать в следующем:хозяинbaseAddressesadd baseAddress = "http: // ????????: 6090 /"baseAddressesхозяин
Предлагаемый ниже ответ помогает, когда эти устройства находятся в закрытой сети, и вы называете частный IP-адрес сервера, но не работает с общедоступным IP-адресом сервера.