web.config наследование / слияние / определение объема приложений, которые не работают в IIS. Служба WCF/Workflow в подпапке
В настоящее время я тестирую следующую структуру в IIS для своих служб AppFabric Workflow и WCF:
/WebApp/ <-- IIS Application here
/WebApp/bin/ <-- binaries here
/WebApp/web.config <-- empty.
/WebApp/WorkflowApp/V1.0/web.config <-- Settings are stored here
/WebApp/WorkflowApp/V1.0/MyWorkflow.xamlx
/WebApp/WorkflowApp/V1.0/Default.aspx <-- just for testing
/WebApp/WcfService/V1.0/web.config <-- Settings are stored here
/WebApp/WcfService/V1.0/MyService.svc
/WebApp/WcfService/V1.0/Default.aspx <-- just for testing
Мой web.config содержит следующий раздел:
<appSettings>
<add key="TestSetting" value="Test Setting Value" />
</appSettings>
Из одного из моих действий кода в моей службе рабочего процесса и из моей службы WCF я хочу прочитать элемент из "appSettings", используя следующий код:
var config = ConfigurationManager.AppSettings["TestSetting"];
Это всегда возвращает ноль. Я также попробовал WebConfigurationManager.AppSettings["TestSetting"], но это также возвращает ноль. Похоже, что иерархия web.config не работает для appSettings.
Просто для тестирования я добавил Default.aspx со следующим содержимым, чтобы увидеть, доступен ли этот appSetting с веб-страницы ASP.NET, и он работает!
<html>
<body>
<h2>
TestWebApp
</h2>
<%= ConfigurationManager.AppSettings["TestSetting"] %>
</body>
</html>
Кажется, что web.config в подпапке вообще не обрабатывается. Почему определение конфигурации не работает для рабочих процессов AppFabric /WCF? И что я могу сделать, чтобы это работало?
Если я помещу службу workflow/WCF в корень моего веб-приложения в IIS, раздел appSettings будет доступен, как и ожидалось. Только когда я помещаю свою службу документооборота в подкаталог, разделы конфигурации недоступны.
Обновить:
Я изменил вопрос, чтобы обобщить его для служб WCF и Workflow, поскольку он затрагивает оба случая. Причина, по которой я пытаюсь это сделать, заключается в уменьшении количества приложений IIS и пулов приложений.
Согласно Руководству по архитектуре Windows Server AppFabric:
Аналогично планированию пула приложений, мы рекомендуем логически группировать несколько сервисов в веб-приложение, где это имеет смысл. AppFabric предназначен для обработки сотен веб-приложений. Однако для обеспечения оптимальной производительности и управляемости цель должна заключаться в том, чтобы поддерживать минимальное количество веб-приложений на практике.
Исходя из этого текста, это заставляет меня поверить, что наличие нескольких служб WCF/Workflow в подпапках веб-приложений должно работать.
1 ответ
Я считаю, что проблема заключается в том, что ваш рабочий процесс выполняется не в потоке ASP.NET, а в его собственном потоке в пуле потоков. В результате он не заботится о правилах определения области ASP.NET, а использует стандартный файл конфигурации AppDomain.