Как настроить службу WCF для клиентов, работающих на сетевых машинах? - PullRequest
0 голосов
/ 05 января 2009

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

На данный момент URI установлен на http://localHost:8000......

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

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

Ответы [ 2 ]

1 голос
/ 05 января 2009

Судя по всему, у вас есть и служба, и клиент в одном исполняемом файле. Хотя это может быть сделано, когда вы хотите, чтобы они были на отдельных машинах, вам необходимо иметь исполняемый файл / хост для службы (либо самостоятельно размещенный, либо в 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>

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

0 голосов
/ 05 января 2009

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

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

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

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

...