我正在使用WCF的网站上工作。我想要做的是,每当WebService URL被更改时,我必须能够在My项目中进行更改而不必停止此操作。所以我想在我的项目的webconfig中设置一个键,并在Reference.cs中将该键值设置为URI。我将项目中的WebService Reference状态更改为dynamic。但问题是,每当我更新web服务时,uri都会更改为下面显示的文本:
“global::Drd.Properties.Settings.Default.CoreBusiness_UbossProvisioning_ProvisioningServices;
”。
我在这里失踪了什么?任何人都可以帮助我......
答案 0 :(得分:0)
您可以创建服务客户端或服务的实例,并可以提供构造函数的URL。这可能会更容易。
答案 1 :(得分:0)
我在这里失踪了什么?
您可以在配置中设置URL,当您要创建该服务的新实例时,可以像这样设置端点地址
YouService.Endpoint.Address = new EndpointAddress("Address from your config.");
答案 2 :(得分:0)
当您将网址行为设置为动态时,框架会为您完成所有操作:
web.config
文件添加密钥(查找CoreBusiness_UbossProvisioning_ProvisioningServices
)Reference.cs
,以便从配置中读取设置。如果您将引用添加到另一个程序集,请将以下部分从app.config
复制到您的web.config
(您可能需要更正名称空间,我只是猜测您的名称空间):
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Drd.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
和
<applicationSettings>
<Drd.Properties.Settings>
<setting name="CoreBusiness_UbossProvisioning_ProvisioningServices"
serializeAs="String">
<value>http://yourservice/address</value>
</setting>
</Drd.Properties.Settings>
</applicationSettings>
(另外,作为一般规则,永远不要编辑生成的文件。)
替代选项
如果要在UbossBridgeURL
中使用AppSettings
,可以创建派生客户端类并在构造函数中设置其URL(我假设生成的类是类ProvisioningServices
):
public class MyProvisioningServices : ProvisioningServices
{
public MyProvisioningServices()
{
Url = ConfigurationManager.AppSettings["UbossBridgeURL"];
}
}
然后使用MyProvisioningServices
类而不是ProvisioningServices
。