Оглавление:
- WCF service. С чего начать. Основные моменты создание службы.
- WCF. Callback через BasicHttpBinding без дуплексной связи.
- Realtime WCF Tracker вызовов клиентского приложения.
- Как отключить публикацию метаданных mex WCF сервисом.
Публикация метаданных вашего сервиса может снизить безопасность системы. Ведь вы предоставляете возможность узнать всю необходимую для работы с ним информацию. При этом, отсутствие возможности получить информация никак не влияет на его работу. Поэтому хотелось бы рассказать как убрать публикацию метаданных сервиса, если не вы их включали. Для начала стоит знать, что метаданные могут быть доступны двумя способами:
- Через HTTP-GET .
- И через специально подготовленную Endpoint для MEX, используя IMetadataExchange.
1. Проверяем файл конфигурации сервера.
1.1 Ищем HTTP-GET
Открываем файл конфигурации, в котором хранятся настройки для ваших сервисов. И ищем раздел <serviceBehaviors>
<system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="SERVICEMETADATANAME"> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel>
Если таковой имеется, тогда ищем tag <behavior/>, у которого внутри есть <serviceMetadata />. Значения атрибутов http(s)GetEnabled="True" говорят о том, что все <services />, у которых задано <service behaviorConfiguration="SERVICEMETADATANAME" />, будут публиковать свои метаданные. Поэтому для того, что бы отключить публикацию достаточно задать:<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />
ВНИМАНИЕ! Если используется пустое значение name <behavior name="">, это говорит о том, что данное поведение будет применено ко ВСЕМ Endpoint вне зависимости от того, где происходит инициализация ServiceHost. Ещё одно замечание, Endpoint не может работать одновременно в режиме httpEnabled="false" и httpsEnabled="true" поэтому надо менять оба параметра.
Запускаем Web сервер. Если при обращении к сервисам получаете сообщение
"Metadata publishing for this service is currently disabled", значит все сделано правильно.
"Metadata publishing for this service is currently disabled", значит все сделано правильно.