Размещение службы WCF с привязкой net.tcp через IIS Manager 7.5

Я новичок в размещении веб-приложений и веб-сервисов. Хотя мне удалось разместить веб-приложение, я сталкиваюсь с препятствием за препятствием при попытке разместить службу WCF с привязкой net.tcp.

Мой сценарий выглядит следующим образом: у меня есть размещенное веб-приложение, которому необходимо взаимодействовать с размещенной службой WCF с привязкой net.tcp через IIS 7.5. Как уже говорилось, веб-приложение размещено нормально, и я могу просматривать веб-сайт. Однако веб-приложение выполняет вызовы службы WCF, и я получаю сообщение «Код ошибки TCP 10061», которое, как я считаю, связано с тем, что моя размещенная служба WCF не работает. Я думаю, что это не работает, потому что я пытаюсь «telnet localhost 808» проверить, запущена ли служба WCF, а это не так. Я просмотрел множество онлайн-руководств, и мне все еще не повезло. Я считаю, что, возможно, я делаю что-то в корне неправильно, будучи новичком, и все такое. Я могу разместить службу через VS2010 и запустить веб-приложение, и оно отлично работает, поэтому я считаю, что мои привязки верны. Я также включил протоколы tcp на обоих веб-сайтах в диспетчере IIS.

Итак, я предполагаю, что мой настоящий вопрос заключается в том, какие шаги диспетчера IIS необходимы для размещения службы WCF с привязкой net.tcp? Мне кажется, что невозможно разместить службу net.tcp через диспетчер IIS, просто создав веб-сайт, потому что диспетчер IIS хочет привязаться к порту http.


person David    schedule 24.08.2011    source источник
comment
Вы когда-нибудь догадывались об этом? Я создал свою версию вашего вопроса, но, похоже, я столкнулся с той же проблемой, что и вы. stackoverflow .com / questions / 16628382 /   -  person Niels Brinch    schedule 25.05.2013


Ответы (2)


Вот что нужно проверить:

  • Убедитесь, что служба Windows адаптера прослушивателя Net.Tcp запущена
  • Убедитесь, что netTcp указан как включенный протокол для вашего веб-сайта (в диспетчере IIS перейдите к расширенным настройкам вашего сайта)
  • Убедитесь, что netTcp указан как включенный протокол для приложения (каталога), в котором размещаются ваши службы (в диспетчере IIS перейдите в каталог, в котором размещены ваши службы, и выберите Дополнительные параметры)
  • Убедитесь, что ваш сайт IIS привязан к net.tcp с указанием правильного номера порта.

РЕДАКТИРОВАТЬ:
См. Следующую страницу MSDN для включения / использования привязок, отличных от HTTP, в .Net 4 + IIS 7 / 7.5:

Настройка службы активации Windows для использования с Windows Communication Foundation

person chris.house.00    schedule 24.08.2011
comment
Также включите функции Windows (установка компонентов Windows) в Microsoft.NET Framework 3.5.1 - Windows Communication Foundation без HTTP-активации. - person Bahri Gungor; 24.08.2011
comment
Спасибо за быстрый ответ. - person David; 25.08.2011
comment
Спасибо за быстрый ответ. Служба Net.TcpListenerAdapter запущена. netTCP также является включенным протоколом как для веб-приложений, так и для веб-служб. 808: * - это протокол netTCP. Также установлена ​​активация WCF без Http. Я также добавил свою службу WCF на веб-сайт по умолчанию, где привязан порт 808 netTCP. Другой вопрос, как моя служба WCF привязывается к порту 808? Через мой файл web.config? Также как запускается служба WCF? Состояние диспетчера IIS показывает «Неизвестно» только для привязки netTCP на веб-сайте по умолчанию. Еще раз спасибо. - person David; 25.08.2011
comment
Кроме того, я столкнулся с одним форумом, на который я еще не заходил. Я установил .Net 4 перед добавлением функций .Net Framework 3.5.1. На форуме было сказано удалить .Net 4 перед добавлением функций .Net Framework 3.5.1. Думаю, сейчас я попробую это решение. - person David; 25.08.2011
comment
Да, в вашем web.config у вас либо будет элемент ‹baseAddress›, который позволит вам установить базовый uri вашей службы, включая номер порта, либо, если вы не укажете это, он будет использовать порт по умолчанию - 808. Служба будет запущена, когда конечная точка службы получит запрос. Насколько мне известно, любой протокол, не связанный с HTTP, привязанный к сайту, всегда будет показывать статус Неизвестно. - person chris.house.00; 25.08.2011
comment
Вы также можете взглянуть на эту страницу в MSDN: msdn.microsoft. com / en-us / library / ms752218.aspx Это довольно хороший пример создания службы и клиента вместе с соответствующими файлами конфигурации и размещения всего этого в IIS. - person chris.house.00; 25.08.2011
comment
baseAddresses следующие ‹host› ‹baseAddresses› ‹добавить baseAddress = net.tcp: // localhost: 8001 //› ‹/baseAddresses› ‹/host› ‹/service› ‹/services›, который, как я предполагаю, используется, когда я хотите разместить вручную, например, консоль ServiceHost. Я также определил, который, как я предполагаю, устанавливает порт при размещении в IIS ‹serviceHostingEnvironment› ‹baseAddressPrefixFilters› ‹add prefix = net.tcp: // localhost: 808 //› ‹/baseAddressPrefixFilters› ‹/serviceHostingEnvironment› - person David; 25.08.2011
comment
Конфигурация, которую вы здесь показываете, указывает на то, что вы используете порт 8001, но, судя по вашему предыдущему сообщению, я думал, что ваша привязка IIS использует порт 808? Эти два числа должны совпадать. - person chris.house.00; 25.08.2011
comment
У меня создалось впечатление, что ‹host› ‹baseAddresses› использовался только при самостоятельном размещении, например, с использованием ServiceHost.exe. Возможно, я ошибаюсь, я также изменю этот базовый адрес на 808. - person David; 25.08.2011
comment
Это не сработало. Я сейчас просматриваю опубликованную вами ссылку. - person David; 25.08.2011
comment
Обновление: я закончил тем, что бросил полотенце с привязкой netTCP и пошел с wsHttpBinding. Мое требование состояло в том, чтобы обеспечить привязку с безопасностью, поэтому wsHttpBinding помогло. Я действительно думаю, что пропустил какой-то шаг или что-то вроде того, как промыл мой сервер во время процесса установки. Я хотел бы вернуться к этой проблеме, и в какой-то момент я переустановлю Server 2008, сделаю еще один шанс и предоставлю еще одно обновление. Я ценю вашу помощь chris.house.00 - person David; 26.08.2011

И я обнаружил, что для меня не работает использование localhost ... Вы должны использовать 127.0.0.1 или имя вашего компьютера.

person Mattias Almén    schedule 09.10.2011