【问题标题】:How to access web.config sections in a Web service called from another application?如何访问从另一个应用程序调用的 Web 服务中的 web.config 部分?
【发布时间】: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


    【解决方案1】:

    实际上,Visual Studio 项目有两种方法可以引用 Web 服务:作为常规引用(就像您对任何其他项目一样)或作为 Web 引用。

    我使用的是前者,这就是我的错误。

    为了引用 Web 服务,我启动了它,从它打开的浏览器窗口中复制了 URL,然后从我的测试应用程序将其粘贴到“添加 Web 引用”窗口中的“URL”文本框中。从那里开始,它工作得很好。

    (顺便说一句,我也保留了常规引用,因为我使用 Web 服务中的一些常量来处理返回值。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 2015-05-30
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多