Настройка WCF InstanceContextMode (на вызов, один) в web.confg - PullRequest
13 голосов
/ 26 апреля 2011

Не сталкивался с этим с небольшим количеством Google.

Я знаю, что могу установить экземпляр, украсив имя класса следующим образом:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, 
                 ConcurrencyMode = ConcurrencyMode.Multiple)]

но можно ли указать это в файле web.config?

Я знаю, что могу указать регулирование (макс. Одновременных пользователей и т. Д.) В web.config / app.config и что числа здесь имеют контекст в зависимости от режима экземпляра - но как указать режим (в наиболее вероятном поведении часть app.config / web.config)?

Первоначально мы шли за услугами Windows Сейчас мы используем WAS. Есть ли какая-то разница? каждый запрос «на вызов» все равно получит свой «сервер» в качестве конвейерной операции?

Спасибо

Ответы [ 3 ]

10 голосов
/ 26 апреля 2011

Вы не можете изменить InstanceContextMode и ConcurrencyMode в web.config с готовой функциональностью, но вы можете написать свое собственное расширение (поведение или пользовательский ServiceHost + ServiceHostFactory + раздел конфигурации), чтобы сделать это, Вот пример как изменить InstanceContextMode без определения его в атрибуте класса обслуживания.

Обработка в WAS одинакова - у каждого типа сервиса все еще есть свой собственный хост сервиса и каждыйзапрос обрабатывается в собственном потоке.

1 голос
/ 20 мая 2013

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

1 голос
/ 26 апреля 2011

Вы не можете настроить InstanceContextMode и ConcurrencyMode в файлах конфигурации, встроить ограничение в WCF, я уверен, что у MS есть свои причины.

О хостинге в WAS, если у вас есть веб-сервер с IIS 7 / 7.5, рекомендуется размещать свой сервис в WAS, потому что вы можете управлять своими сервисами с помощью управления IIS и получать от него множество встроенных возможностей.

...