通过从web.config中读取来更改Web服务的URL

时间:2012-07-16 22:37:27

标签: c# web-services asmx

我有一个使用asmx Web服务的WCF应用程序。我在应用程序的一百万个地方使用网络服务:

    public string LogOnUser(string username, string password, string db)
    {
        var wsi = new ASMXServiceInterface();
        return wsi.LogIn();
      }

    public string GetNotes(string username, string password, string db)
    {
        var wsi = new ASMXServiceInterface();
        return wsi.GetNotes();
      }

    etc, etc etc...

当然我想在构造函数中设置服务的url,但是它在reference.cs中自动生成,如果我在那里更改它,它可以工作,但如果我更新我的引用(我会)它丢失了我必须手动再做一次:

      /// <remarks/>
    public ASMXServiceInterface()
    {
        this.Url = 
    System.Web.Configuration.WebConfigurationManager.AppSettings["RQTCSServiceURL"];
   }

Web服务网址需要是动态的,因为它的不同版本已经实现。如何在我的WCF项目中设置我的Web服务的URL一次,这样可以在web.config中更改服务的url而不必在reference.cs中进行更改?

2 个答案:

答案 0 :(得分:4)

您可以通过将网址行为转换为动态

来更改自动生成的网址服务网址

请参阅有关如何执行http://www.codeproject.com/Articles/12317/How-to-make-your-Web-Reference-proxy-URL-dynamic

的示例

答案 1 :(得分:3)

您可以通过向web.config添加密钥来执行此操作,例如:

<add key="webserviceURL" value ="https://mywebservice.com/WebService.asmx" />

然后在您的代码中,执行以下操作:

private static WebService createWebService() {
        WebService service= new WebService();

        string url = ConfigurationManager.AppSettings["webserviceURL"];
        if ( !string.IsNullOrEmpty(url) ) {
            service.Url = url;
        }

        return service;
    }