1

我有一个使用 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...

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

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

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

4

2 回答 2

4

您可以通过将 UrlBehaviour 转换为动态来更改 web 服务的自动生成 url

请参阅有关如何操作的示例http://www.codeproject.com/Articles/12317/How-to-make-your-Web-Reference-proxy-URL-dynamic

于 2012-07-16T22:43:12.497 回答
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;
    }
于 2012-07-16T22:42:04.150 回答