0

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

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

我在这里想念什么?谁能帮帮我吗...

4

3 回答 3

0

我在这里想念什么?

您可以在配置中设置 URL,当您要创建该服务的新实例时,您可以像这样设置端点地址

YouService.Endpoint.Address = new EndpointAddress("Address from your config.");
于 2013-10-03T06:38:26.453 回答
0

您可以创建服务客户端或服务的实例,并且可以将 URL 提供给构造函数。那可能更容易。

于 2013-10-03T06:34:54.067 回答
0

当您将 URL Behavior 设置为Dynamic时,框架会为您完成所有工作:

  • 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>

(此外,作为一般规则,永远不要编辑生成的文件。)

替代选项

如果你想使用你的UbossBridgeURLin AppSettings,你可以创建一个派生的客户端类并在构造函数中设置它的 URL(我假设生成的类是 class ProvisioningServices):

public class MyProvisioningServices : ProvisioningServices
{
     public MyProvisioningServices()
     {
         Url = ConfigurationManager.AppSettings["UbossBridgeURL"];
     }
}

然后使用MyProvisioningServices类而不是ProvisioningServices.

于 2013-10-03T06:43:06.763 回答