Как настроить службу WCF для клиентов, работающих на сетевых машинах?

StackOverflow https://stackoverflow.com/questions/413856

  •  03-07-2019
  •  | 
  •  

Вопрос

Я только что создал службу / клиент WCF, и все работает нормально при работе на той же машине. Но не могу понять, как настроить его для работы на разных машинах. Ты знаешь как?

В настоящий момент URI настроен на http: // localHost: 8000 ......

Но я думаю, что хочу что-то вроде net.tcp: // MyServer: 8000 & # 8230; ..

Любые идеи были бы великолепны. Спасибо.

Это было полезно?

Решение

Судя по всему, у вас есть и служба, и клиент в одном исполняемом файле. Хотя это может быть сделано, когда вы хотите, чтобы они были на отдельных машинах, вам необходимо иметь исполняемый файл / хост для службы (либо самостоятельно размещенный, либо в IIS) и исполняемый файл для клиента. Каждый из них должен быть правильно настроен с адресом, привязкой и контрактом в соответствующем разделе конфигурации для него. Таким образом, на сервере у вас будет что-то вроде этого:

<configuration>
    <system.serviceModel>
        <services>
            <service name="YourService">
                <endpoint address="http://MyServer:8000/..."
                          binding="BasicHttpBinding"
                          contract="Your.IContract" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

И на клиенте у вас будет это:

<configuration>
    <system.serviceModel>
        <client>
            <endpoint address="http://MyServer:8000/..."
                      binding="BasicHttpBinding"
                      contract="Your.IContract"
                      name="ClientEndpoint" />
        </client>
    </system.serviceModel>
</configuration>

Главное - убедиться, что клиент и сервер могут взаимодействовать друг с другом через указанный порт и протокол (прежде всего, убедитесь, что брандмауэр не блокирует связь). Еще одна вещь, о которой следует помнить, это изменение протокола привязки, который может повлиять на другие аспекты вашей службы (безопасность важна, а также то, что вы можете и не можете делать со службой).

Другие советы

Здесь недостаточно информации, чтобы ответить на ваш вопрос.

Предполагая, что вы не задаете информацию об адресе / привязке / контракте в ServiceHost и прокси через код, вам необходимо опубликовать раздел вашего конфигурационного файла.

Если вы делаете это в коде, вам нужно показать, какой код вы используете.

Судя по тому, что я могу сказать, у вас может быть несоответствие с транспортной привязкой. Служба и клиент должны находиться на одном и том же транспорте (http, tcp, именованные каналы и т. Д. И т. Д.).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top