web.config继承/合并/确定appSettings无法在IIS托管WCF /工作流服务子文件夹中工作

时间:2012-01-19 14:54:37

标签: workflow-foundation-4 appfabric workflowservice

我目前正在IIS中为我的AppFabric工作流服务和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"];

这总是返回null。我也尝试过WebConfigurationManager.AppSettings [“TestSetting”],但这也会返回null。似乎web.config层次结构不适用于appSettings。

为了测试,我添加了一个Default.aspx,其中包含以下内容,以查看是否可以从ASP.NET网页访问此appSetting,并且它可以正常工作!

<html>
    <body>
        <h2>
            TestWebApp
        </h2>
        <%= ConfigurationManager.AppSettings["TestSetting"] %>
    </body>
</html>

似乎根本没有处理子文件夹中的web.config。为什么配置范围不适用于AppFabric工作流/ WCF服务?我能做些什么才能让它发挥作用?

如果我将工作流/ WCF服务放在IIS中的Web应用程序的根目录中,则可以按预期访问appSettings部分。只有当我将工作流服务放在子目录中时,才能访问配置节。

更新

我已将问题修改为将其推广到WCF和Workflow服务,因为它会影响这两种情况。我正在尝试这个的原因是减少IIS应用程序和应用程序池的数量。

根据Windows Server AppFabric Architecture Guide

  

与应用程序池规划类似,我们建议您将多个服务逻辑分组到有意义的Web应用程序中。 AppFabric旨在处理数百个Web应用程序。但是,为了获得最佳性能和可管理性,目标应该是尽可能减少Web应用程序的数量。

从这篇文章中,它让我相信在网络应用程序的子文件夹中有多个WCF /工作流服务应该可以工作。

1 个答案:

答案 0 :(得分:2)

我认为问题在于您的工作流程没有在ASP.NET线程上运行,而是在线程池中自己的线程上运行。因此,它并不真正关心ASP.NET作用域规则,而是使用标准的AppDomain配置文件。