1

我目前正在 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,以查看这个 appSetting 是否可以从 ASP.NET 网页访问,并且可以正常工作!

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

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

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

更新:

我已修改问题以将其概括为 WCF 和工作流服务,因为它会影响这两种情况。我尝试这样做的原因是减少 IIS 应用程序和应用程序池的数量。

根据Windows Server AppFabric 架构指南

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

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

4

1 回答 1

2

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

于 2012-01-19T16:29:22.413 回答