В настоящее время я тестирую следующую структуру в 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? И что я могу сделать, чтобы это работало?
Если я помещу службу рабочего процесса / WCF в корень моего веб-приложения в IIS, раздел appSettings будет доступен, как и ожидалось. Только когда я помещаю свою службу документооборота в подкаталог, разделы конфигурации недоступны.
Обновление:
Я изменил вопрос, чтобы обобщить его для служб WCF и Workflow, поскольку он затрагивает оба случая. Причина, по которой я пытаюсь это сделать, заключается в уменьшении количества приложений IIS и пулов приложений.
В соответствии с Руководством по архитектуре Windows Server AppFabric :
Аналогично планированию пула приложений, мы рекомендуем логически группировать несколько служб в веб-приложение, где это имеет смысл. AppFabric предназначен для обработки сотен веб-приложений. Однако для обеспечения оптимальной производительности и управляемости цель должна состоять в том, чтобы количество веб-приложений было как можно меньше.
Исходя из этого текста, я полагаю, что наличие нескольких служб WCF / Workflow в подпапках веб-приложений должно работать.