Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从WebConfig设置WCF URL_C#_Wcf - Fatal编程技术网

C# 如何从WebConfig设置WCF URL

C# 如何从WebConfig设置WCF URL,c#,wcf,C#,Wcf,我在一个使用WCF的网站上工作。我想做的事情是,无论何时更改WebService URL,我都必须能够在我的项目中进行更改,而不必停止此操作。所以我想在我的项目的webconfig中设置一个键,并在Reference.cs中将该键值设置为URI。我将项目中WebService引用的状态更改为动态。但问题是,每当我更新Web服务时,uri都会更改为如下所示的文本: “global::Drd.Properties.Settings.Default.CoreBusiness\u ubossprovis

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

global::Drd.Properties.Settings.Default.CoreBusiness\u ubossprovisiongservices;


我在这里错过了什么??任何人都可以帮我…

你可以创建你的服务客户端或你的服务的实例,你可以向构造函数提供URL。这可能更容易

我在这里错过了什么

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

YouService.Endpoint.Address = new EndpointAddress("Address from your config.");

当您将URL行为设置为“动态”时,框架将为您执行所有操作:

  • 将密钥添加到
    web.config
    文件(查找
    CoreBusiness\u UbossProvisioning\u ProvisioningServices
  • 生成
    Reference.cs
    ,以便从配置中读取设置
如果您将引用添加到另一个程序集,请将以下部分从其
app.config
复制到您的
web.config
(您可能需要更正名称空间,我只是猜测您的名称空间):


然后使用
myprovisiongservices
类,而不是
provisiongservices

我是新来的,所以请您将其细分给我。。这是构造函数`string url=System.Configuration.ConfigurationManager.AppSettings[“UbossBridgeURL”];如果((this.IsLocalFileSystemWebService(this.Url)==true)){this.UseDefaultCredentials=true;this.useDefaultCredentialsSetExplicit=false;}否则{this.useDefaultCredentialsSetExplicit=true;}`在构造函数中有一个指定URl的部分。。我在那里设置了配置值,但当您更新web服务时,它会达到我上面指定的默认值。。。问题是我无法识别这个.Url的位置以及它如何连接到Web服务。:'(是的,我有..`public ProvisioningServices(){this.Url=System.Configuration.ConfigurationManager.AppSettings[“UbossBridgeURL”];如果((this.IsLocalFileSystemWebService(this.Url)==true)){this.UseDefaultCredentials=true;this.useDefaultCredentialsSetExplicit=false;}else{this.useDefaultCredentialsSetExplicit=true;}}`。但是如果我必须更新WebReference呢?它会重新生成ref.cs得到更新。有没有其他方法可以实现这个动态url,因为每当我们在web服务中编写新方法时,我们都必须更新引用,每当我们更新ref.cs时,ref.cs会被再次写入,我们会丢失关键值您不需要添加的代码。相反AppSettings中的
UbossBridgeURL
广告只需使用添加到配置文件中的密钥(再次查找
CoreBusiness\u ubossProvisioningService
)。并将
Reference.cs
文件还原为其原始生成的状态。UbossBridgeURL键位于web配置中,而不是应用配置中。Webservice引用位于主项目中的ddl项目中。因此,我在主项目的WebConfig中添加了UbossBridgeURL键。我必须将这两个部分从我的应用配置复制到我的web配置中ig并保持reference.cs完整?这就是你的意思吗?
<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>
public class MyProvisioningServices : ProvisioningServices
{
     public MyProvisioningServices()
     {
         Url = ConfigurationManager.AppSettings["UbossBridgeURL"];
     }
}