Настройте WCF для того, чтобы LOCALHOST-только послушать

Подобный веб-серверу разработки Visual Studio (Кассини) ограничение, что это только серверы на localhost, у меня есть Реализация услуги WCF, которая только необходима на localhost.

Я не возражал бы против других машин, имеющих доступ, за исключением того, что Windows Firewall запрашивает, чтобы позволить программе слушать на внешне стоящем NIC. Так как это только необходимо внутренне, я ограничил бы конфигурацию Серверной стороны WCF так, чтобы она не смещалась детектор брандмауэра.

binding.HostNameComparisonMode = HostNameComparisonMode.Exact правильное решение? Я не вижу, как это достаточно.

====

Как Кассини, эта Реализация услуги является заместителем для чего-то еще, что ДЕЙСТВИТЕЛЬНО требует сетевой связи. Клиент может быть настроен для соединения с реальным сервером или поддельной реализацией, работающей localhost.

8
задан Jason Kleban 2 March 2010 в 03:57
поделиться

2 ответа

Это зависит от того, как вы размещаете сайт. Если вы находитесь в IIS7 или WAS, то WCF использует режим согласования IIS. В противном случае, если вы используете HostNameComparisonMode.Exact, то да, имя хоста всегда будет критическим фактором в сопоставлении. Если имя хоста не совпадает, диспетчеризация, как правило, завершается неудачей.

Следует отметить, что exact не является на 100% абсолютно точным... он все еще допускает некоторую вариацию в имени хоста. Если у вас есть и имя хоста NetBios и полное имя DNS, соответствие все еще будет происходить, поскольку WCF рассматривает эти два как одно и то же.

System.ServiceModel.BasicHttpBinding.HostNameComparisonmode

0
ответ дан 5 December 2019 в 21:18
поделиться

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

Из раздела MSDN под названием «Выбор транспорта» (выделено мной):

Когда использовать именованный транспортный канал

Именованный канал - это объект в {{1} } Ядро операционной системы Windows, такое как раздел общей памяти, который процессы могут использовать для связи. Именованный канал имеет имя и может использоваться для односторонней или дуплексной связи между процессами на одной машине.

Если требуется обмен данными между различными приложениями WCF на одном компьютере, и вы хотите предотвратить обмен данными с другого компьютера , используйте именованные каналы. транспорт. Дополнительным ограничением является то, что процессы, запущенные с удаленного рабочего стола Windows , могут быть ограничены одним и тем же сеансом удаленного рабочего стола Windows , если они не имеют повышенных прав привилегии.

Это полностью соответствует вашим требованиям и должно быть не более чем изменением конфигурации.

7
ответ дан 5 December 2019 в 21:18
поделиться
Другие вопросы по тегам:

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