2011-12-15 13 views
12

У меня есть служба .NET WCF, работающая на IIS. Я не указал порт, поэтому предположим, что он запущен на порту 80. Мне нужно установить мою службу на сервере, где порт 80 уже используется, и парень сети попросил меня изменить мой сервис для работы на порту 443. Как сделать Я делаю это? Я предполагаю, что его можно настроить в app.config, но я не могу найти статью, которая показывает мне, как это сделать.Как запустить службу WCF на конкретном порту

Вот мой текущий app.config:

<system.serviceModel> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 

+1

Вы можете отобразить anoter порт на IIS. Просто щелкните правой кнопкой мыши на своем веб-сайте, где есть служба WCF, или если приложение WCF-сервиса является веб-сайтом в вашем IIS, а затем выберите редактирование привязок, теперь вы можете изменить http для прослушивания на другом порту, а не на 80. – Rajesh

ответ

5

Я предполагаю, что вы используете свои службы в протоколах net.tcp.

1) Редактирование привязок (правой кнопкой мыши Default Web Site выберите Edit Bindings

enter image description here

2) Server Side

<service name="YouServiceNameSpace.YourService"> 
<endpoint address="" binding="netTcpBinding" bindingConfiguration="YourBinding" contract="YourContract" /> 
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" contract="IMetadataExchange" /> 
</service> 

3) на стороне клиента

<endpoint address="net.tcp://YourHost:443/YourServiceDirecotry/YourService.svc" 
    behaviorConfiguration="YourBehavior" binding="netTcpBinding" 
    bindingConfiguration="YourTcpBinding" contract="YourContract" 
    name="YourContractName" /> 
+0

Обратите внимание, что в приведенной выше точке 1 предполагается, что вы запустили IISManager и перешли к соединению, соответствующему серверу, на котором запущена ваша веб-страница. –

1

Обычно вы должны иметь узел службы, по меньшей мере, один узел обслуживания и каждый из которых имеет конечные точки, где вы можете указать порт. Подробнее на сайте: http://msdn.microsoft.com/en-us/library/ms733932.aspx

Например:

<services> 
    <service name="MyNamespace.myServiceType"> 
    <endpoint 
     address="net.tcp://0.0.0.0:8000" binding="basicHttpBinding" 
     bindingConfiguration="myBindingConfiguration1" 
     contract="MyContract" /> 
    </service> 
</services> 
+0

Я использую. Net 4.0, так что это упрощенная конфигурация. См. Здесь http://msdn.microsoft.com/en-us/library/ee530014.aspx Это добавляет проблемы, поскольку у меня нет уже настроенной службы, которую я могу изменить. –

+0

@SteveChadbourne Вы все еще можете указать конечную точку и адрес, нет? – MPelletier

+0

Ничего, я понял. Да, как вы просто указываете порт ... hmmm ... – MPelletier

0

Укажите порт в адрес конечной точки. Более подробную информацию см. В разделе «Определение адресов конечных точек в коде» в статье this.

+0

Это будет работать, если вы самостоятельно размещаете свою службу WCF - в противном случае среда размещения (IIS) будет определять адрес конечной точки службы для большого extent ... –

5

Мы можем сделать это используя файл .csproj проекта WCF (в случае o е с помощью VS) .Just изменить значение этого тега XML в вашем соответствующем файле:

Чтобы запустить службу на номер порта 60000,

<DevelopmentServerPort>60000</DevelopmentServerPort> 
Смежные вопросы