【发布时间】:2019-06-19 12:13:45
【问题描述】:
我正在使用 Visual Studio 框架 4.7.1 开发 Web 服务。它的一个 Web 方法需要调用另一个 Web 服务(由另一家公司提供)。它将它接收到的参数(与我们的主应用程序的业务逻辑一致)转换为其他 Web 服务可以处理的值(根据它自己的业务逻辑)。为此,它严重依赖存储在 Web.config 文件中的数据。
我直接对其进行了测试(启动 Web 服务并在 Web 浏览器页面上使用自动生成的页面调用 Web 方法)并且一切正常。
现在,我需要构建一个测试应用程序(也在 Visual Studio,框架 4.7.1 中)来调用相同的 Web 方法。在第一次测试它时,我注意到 Web 服务试图访问测试应用程序的配置文件而不是它自己的(如 Can't read Web.config with ConfigurationManager.AppSettings 中所述)。
所以我在 Web.config 中创建了一个 applicationSettings 部分,并将 appSettings 中的所有数据移到其中。它工作得很好。
但是,现在我注意到自定义部分也发生了同样的事情。其中一个看起来像这样:
<configSections>
<section name="jobTypeLists" type="AdelSoft_WS_FRA.JobTypesSection" />
</configSections>
<jobTypeLists>
<jobTypes>
<jobType codeCustomerType="A" codeJobType="JobForA" />
<jobType codeCustomerType="B" codeJobType="JobForB" />
</jobTypes>
</jobTypeLists>
我可以看到这样的结构如何适合它自己的 .settings 文件,但我还有另一个更复杂的结构。 (例如,文本节点最多可以有四个祖先。)为了保持简短,我现在不提供它,但可以很容易地安排它。
ConfigurationManager.GetSection("jobTypeLists") 从测试应用程序调用时返回 null。与WebConfigurationManager.GetSection("jobTypeLists") 相同。
我也尝试使用ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile) 访问配置文件,但我似乎无法在它返回的配置对象中找到我的部分。
我不确定这意味着什么,但配置对象的 FilePath 属性包含“C:\Folder\InnerFolder\WebServiceFolder\web.config.config”。为什么是第二个“.config”?我尝试将相同的字符串传递给 ConfigurationManager.OpenExeConfiguration(),但没有“.config”扩展名:它返回 null。 (我觉得应该如此。)
Configuration 对象有 10 个部分组和 22 个部分,我无法从中做出正面或反面。同样,我可以列出它们。
【问题讨论】:
标签: visual-studio web-services web-config custom-sections