WCF ServiceHost уже имеет 5 поведений

Я создаю ServiceFactory для взятия под контроль inicialization моих сервисов, подвергнутых через IIS 7.

Однако я удивлен поведением ServiceHost. Хотя у меня есть 0 конфигурационных файлов для сервиса, везде, где я Инициализирую новый ServiceHost, как это:

var host = new ServiceHost(typeof(MyService), baseAddresses);

Затем я хочу добавить некоторые поведения, только если сборка находится в Режиме отладки:

#if DEBUG
host.Description.Behaviors.Add(new ServiceDebugBehavior());
#endif

Однако этот код, сбои вызывают ServiceDebugBehavior, уже применяется! Несмотря на у меня нет конфигурационных файлов, и никакие атрибуты не относились к классу обслуживания, хост уже имеет это поведение и 5 более прикладных!

Действительно ли это - ожидаемое поведение? Что, если я хочу отключить ServiceDebugBehavior на сборках конечных версий?

Заранее спасибо,

5
задан Iñaki Elcoro 16 February 2010 в 13:18
поделиться

2 ответа

Непросто - я не знаю никаких настроек, чтобы просто отключить это. Вопрос в том, какая польза от этого ??

Насколько я понимаю, большинство из этих действий весьма существенны - аутентификация, учетные данные службы и так далее. И если они есть по умолчанию, даже без конфигурации, я бы поверил, что они есть не зря.

Но если вы действительно этого хотите, вы всегда можете создать свой собственный CustomServiceHost и делать все, что вам нравится внутри этого класса, включая удаление всех предопределенных вариантов поведения, если хотите.

Если вы хотите, например, включите параметр IncludeExceptionDetailsInFaults в поведении отладки службы, попробуйте этот тип кода:

ServiceDebugBehavior behavior = 
       host.Description.Behaviors.Find<ServiceDebugBehavior>();

if(behavior != null)
{
    behavior.IncludeExceptionDetailInFaults = true;
}
else
{
    host.Description.Behaviors.Add(
        new ServiceDebugBehavior() { IncludeExceptionDetailInFaults = true });
}

В этом случае, если ServiceDebugBehavior уже присутствует, вы его найдете и просто установите для свойства значение true - в противном случае вы создадите и добавите новый ServiceDebugBehavior . Думаю, довольно просто.

5
ответ дан 14 December 2019 в 19:11
поделиться

Вы не должны создавать поведение отладки службы внутри #if DEBUG, вместо этого просто установите значения свойств, которые вы хотите изменить по умолчанию.

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

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