Настройка WCF InstanceContextMode (для вызова, одиночный) в web.confg
Не сталкивайтесь с этим с довольно большим количеством Googling.
Я знаю, что могу установить экземпляр, украсив имя класса таким образом:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,
ConcurrencyMode = ConcurrencyMode.Multiple)]
но могу ли я указать это в файле web.config
?
Я знаю, что я могу указать дросселирование (максимальные одновременные пользователи и т.д.) в web.config
/app.config
и что здесь цифры имеют контекст в зависимости от режима экземпляра, но как указать режим (наиболее вероятно, поведение раздел app.config
/web.config
)?
Первоначально мы отправлялись на службы Windows. Теперь мы используем WAS. Разве WAS имеет значение - например. каждый запрос "каждый вызов" все равно получит собственный "сервер" в качестве операции с конвейером?
Спасибо
Ответы
Ответ 1
Вы не можете изменить InstanceContextMode
и ConcurrencyMode
в web.config с помощью встроенных функций, но вы можете написать свое собственное расширение (поведение или пользовательский раздел ServiceHost
+ ServiceHostFactory
+ config), чтобы сделать это, Вот пример, как изменить InstanceContextMode
, не определяя его в атрибуте в классе службы.
Обработка в WAS одинакова - каждый тип сервиса по-прежнему имеет свой собственный хост службы, и каждый запрос обрабатывается в своем собственном потоке.
Ответ 2
Как и в предыдущих ответах, вы не можете сделать это без какой-либо работы. Я должен был сделать это для клиента недавно, и я зарегистрировал его здесь. Я также предоставил валидатору, чтобы он не разрешал запуск службы, если он не настроен так, как вам хотелось бы. Подробности здесь changing-wcf-concurrency-programatically.
Ответ 3
Вы не можете настроить InstanceContextMode и ConcurrencyMode в файлах конфигурации, построить ограничение в WCF, я уверен, что у MS есть свои причины.
О хостинге в WAS, если у вас есть веб-сервер с IIS 7/7.5, рекомендуется разместить вашу службу с WAS, потому что вы можете управлять своими службами с помощью IIS и получать из нее множество встроенных возможностей.