我正在使用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:\文件夹\ InnerFolder \ WebServiceFolder \ web.config.config”。为什么本次“的.config”?我尝试了相同的字符串传递给ConfigurationManager.OpenExeConfiguration(),没有“的.config”扩展:它返回null。 (因为它应该,我的感觉。)
配置对象具有10个组和22层的部分,这是我不能从使正面或反面。同样,我可以列出他们。
实际上,有两种方法用于Visual Studio项目中引用Web服务:作为一个经常引用(像使用任何其他项目)或Web引用。
我用的是前者,而在这一方面我的错误。
引用Web服务,我就开始了,从复制它打开浏览器窗口的URL,并粘贴入“URL”文本框中,从我的测试应用程序中的“添加Web引用”窗口。从那里,它工作得很好。
(顺便说一句,我一直定期基准为好,因为我使用的是从Web服务的一些常量来处理返回值。)