需要帮助动态设置Web服务代理而无需构建?

时间:2009-04-13 19:29:07

标签: c# visual-studio web-services

我在生产中部署了一个引用外部Web服务的Web应用程序。 查看Visual Studio中的源代码,我看到Web referebce是静态链接的。在代理reference.cs中,它是url的硬编码。 this.Url =“http://server/WebService/Service.asmx”;

我可以更改网址。但是,我希望代理从web.config文件中获取url。如何在不使用Visual Studio将url行为设置为动态的情况下增强代理代码?我很乐意在C#中获得一些代码示例。

3 个答案:

答案 0 :(得分:1)

将行为更改为动态时,可以使用Visual Studio生成的相同代码:

public Service1() {
    string urlSetting = System.Configuration.ConfigurationSettings.AppSettings["WebApplication1.localhost.Service1"];
    if ((urlSetting != null)) {
        this.Url = string.Concat(urlSetting, "");
    }
    else {
        this.Url = "http://localhost/WebService1/Service1.asmx";
    }
}

答案 1 :(得分:1)

Settings.settings项目的属性文件夹中,为其中一个属性添加网络服务网址设置。

然后修改this.Url = Properties.Settings.YourWebServiceUrlName

这将在您的web.config中创建一个配置,您可以在每个服务器的基础上进行更改。我通常将属性设置设置为我的生产服务器设置,然后修改我的本地开发环境的web.config。

答案 2 :(得分:1)

我认为网络参考的在线文档总结得相当好:

  

如果您将URL行为设置为   代理的静态默认值   class使用a设置URL属性   创建时的硬编码URL   班级的实例。

     

如果设置了Web的URL行为   引用动态,应用程序   从运行时获取URL   你的appSettings元素   应用程序的配置文件。

来源:MSDN,Web References in Visual Studio

换句话说,是的,如果要从配置文件中设置它,必须在Visual Studio(或其他编辑器)中将其更改为动态。