доступ нескольких пользователей к wcf, киоскам - PullRequest
0 голосов
/ 24 февраля 2011

у нас в настоящее время есть такая настройка:

1) веб-сайт, который предоставляет функциональность пользователю, один из его модулей подключается к отдельной веб-службе (WCF) в качестве ссылки.

2)внутренний веб-сервис, видимый только внутри сети, который предоставляет отдельную функциональность общедоступному веб-сайту.он отображает и возвращает некоторые данные и отчеты rdlc в виде байтового массива.

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

Единственная оставшаяся проблема заключается в том, что всякий раз, когда все больше пользователей пытаются получить доступ к этой веб-службе с веб-сайта, каким-то образом веб-служба останавливается, и для ее запуска требуется обновление пула.Я проверил настройки IIS для веб-службы, и соединения установлены без ограничений.

Справка!

1 Ответ

0 голосов
/ 24 февраля 2011

Как я уже сказал в своем комментарии, для любой серьезной работы я бы обычно рекомендовал не использовать IIS в качестве хоста приложения.У него есть несколько недостатков (он определяет адрес службы, он должен иметь дело с пулами приложений и их переработкой и т. Д.)

Вместо этого я обычно выполняю свои производственные сервисы в режиме самостоятельного размещения, например, в Windows NTоказание услуг.Это дает мне большую гибкость: я полностью контролирую все аспекты, включая адреса, и я могу запускать / останавливать службы по своему усмотрению, и я не имею права перерабатывать пулы приложений.

По сути, вам нужно создать экземпляр ServiceHost из среды выполнения WCF и присвоить ему класс обслуживания для размещения, а также, необязательно, один (или несколько) базовых адресов, где ваша служба предоставляет конечные точки в.

ServiceHost svcHost = new ServiceHost(typeof(MyWCFService));

// optionally set additional properties here, if needed

svcHost.Open();  // now, the host is open and accepting 

Если вы хотите прекратить прослушивание запросов, просто позвоните svcHost.Close(), и ваш хост службы пропал.

Когда вы упаковываете это в службу NT, обычно вы выполняете настройку и .Open() хоста службы в методе OnStart, и вы обрабатываете svcHost.Close() в методе OnStop службы NT.

Это приложение, содержащее ServiceHost, не должнобыть службой NT - особенно для тестирования, всегда очень просто поместить ваш ServiceHost в консольное приложение, запустить его и, таким образом, оживить службу WCF, протестировать / отладить / улучшить, а затем просто закрытьснова консольное приложение.На мой взгляд, гораздо проще, чем копаться в IIS, виртуальных каталогах и тому подобном.

См .:

...