如何从Web Config设置WCF URL

时间:2013-10-03 06:30:33

标签: c# wcf

我正在使用WCF的网站上工作。我想要做的是,每当WebService URL被更改时,我必须能够在My项目中进行更改而不必停止此操作。所以我想在我的项目的webconfig中设置一个键,并在Reference.cs中将该键值设置为URI。我将项目中的WebService Reference状态更改为dynamic。但问题是,每当我更新web服务时,uri都会更改为下面显示的文本:

global::Drd.Properties.Settings.Default.CoreBusiness_UbossProvisioning_ProvisioningServices;”。

我在这里失踪了什么?任何人都可以帮助我......

3 个答案:

答案 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