Как разместить WCF через порты TCP?

Решение одной строкой

new Date(new Date(1422524805305).getTime() - 330*60*1000)

Вместо 1422524805305 используйте метку времени в миллисекундах Вместо 330, используйте смещение часового пояса в минутах по отношению к минутам. Время по Гринвичу (например, Индия +5: 30 - 5 * 60 + 30 = 330 минут)

5
задан Peter Mortensen 31 July 2015 в 22:14
поделиться

4 ответа

В WCF вы можете самостоятельно разместить любую службу, создав экземпляр ServiceHost class, настройте его, указав правильные конечные точки и реализацию службы, которую вы хотите предоставить, и вызовите для него Open . Это называется самообслуживанием , потому что вы размещаете службу (и ее прослушиватели портов) из своего собственного приложения.

В качестве альтернативы вы можете разместить свою службу в IIS, но вы должны знать, что пока вы может размещать WCF в IIS 6, он позволяет размещать только конечные точки HTTP и HTTPS. Если вы хотите разместить конечные точки TCP в IIS (что является хорошей идеей), вам понадобится IIS 7.

Подробнее здесь .

8
ответ дан 14 December 2019 в 04:45
поделиться

вы можете использовать любой порт (при условии, что у вас есть на это разрешение) для размещения ваших служб wcf. при использовании IIS для размещения служб wcf это несколько отличается, но в средах с самостоятельным размещением просто добавьте номер порта к своему базовому адресу, и все готово. (при использовании Vista или Server 2008 вам необходимо предоставить доступ к порту, если вы не работаете с правами администратора (например, с помощью netsh))

, чтобы использовать, например, порт 1337 для службы http (или net.tcp), просто добавьте ": 1337 / "на ваш базовый адрес, а остальное сделаем за вас.

0
ответ дан 14 December 2019 в 04:45
поделиться

Может быть, это поможет

<services>
  <service behaviorConfiguration="configname"
    name="servicename">
    <endpoint address="" binding="netTcpBinding" bindingConfiguration="MyServiceBinding"
      name="NetTcpBindingEndpoint" bindingName="MyServiceBinding"
      contract="Interface">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

    <endpoint address="mex" binding="customBinding" bindingConfiguration="myMexTcpBinding"
      name="MexTcpBindingEndpoint" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:prot/TestService" />
      </baseAddresses>
    </host>
  </service>
</services>
0
ответ дан 14 December 2019 в 04:45
поделиться

Все привязки HTTP работают с TCP на транспортном уровне. Итак, вы можете использовать привязки HTTP и IIS.6 для размещения службы WCF, которая работает на определенном TCP-порту.

Вот пошаговое руководство о том, как этого добиться:

  • настроить службу для запуска на желаемом порту из файл конфигурации (или код):

     
    <хост>
     <базовые адреса>
     
     
    
    
    
    

  • в IIS создайте веб-сайт (или виртуальный каталог) и настройте его привязку для работы на порту, который вы выбрали в конфигурации службы baseAddress (8000 в приведенном выше примере).

Результатом описанных выше шагов является WCF служба, которая работает на TCP-порту 8000 для транспортного уровня, используя HTTP в качестве транспортного протокола.

Изменить : Я думаю, вы здесь немного запутались. Если вы пытаетесь достичь двоичного передаваемого пакета, то единственное решение - привязка net.tcp, несовместимая с IIS.6. Если вы просто хотите иметь возможность выбрать TCP-порт соединения, то это можно сделать с помощью любой HTTP-привязки, как показано в моем примере выше, и ее можно использовать в IIS.6.

0
ответ дан 14 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: