Как добавить поведение конечной точки для открытия службы WCF, размещенной в IIS - PullRequest
3 голосов
/ 04 мая 2011

У меня есть служба WCF, размещенная на IIS, и мне нужно добавить к ней поведение конечной точки.Я не могу просто добавить его в web.config.(Мы должны поддерживать архитектуру плагинов, и авторы плагинов не будут иметь доступа к моему web.config.) Я попытался поместить это в статический конструктор для сервиса:

var endpointDispatcher = OperationContext.Current.EndpointDispatcher;
SilverlightFaultMessageInspector inspector = new SilverlightFaultMessageInspector();
endpointDispatcher.DispatchRuntime.MessageInspectors.Add(inspector);

, но выдает исключение, говорящее«Это значение нельзя изменить после открытия ServiceHost.»Если я вызываю host.Close () перед добавлением объекта инспектора, он по-прежнему выдает то же исключение.

Я тоже пробовал это сделать:

var host = OperationContext.Current.Host;
host.Description.Endpoints[0].Behaviors.Add(new SilverlightFaultBehavior());

, но, похоже, это не дает никакого эффекта.Поведение конечной точки никогда не вызывается.

Так возможно ли добавить поведение конечной точки в службу WCF, размещенную на IIS?

1 Ответ

2 голосов
/ 04 мая 2011

Поведение конечной точки можно добавить только до открытия ServiceHost (запускает хостинг службы).Так что требует перезагрузки вашего сервиса.Доступ к ServiceHost для служб, размещенных в IIS, осуществляется через пользовательский ServicHostFactory, который должен быть определен в файле .svc.Поэтому вам обычно нужно что-то вроде custom ServiceHostFactory, которое будет загружать поведения из некоторого репозитория и использовать их в методе CreateServiceHost.Поведение будет применяться только после перезапуска приложения.

...