如何更改Web服务的位置(Url)并以编程方式更新Web引用

本文关键字:Web 编程 更新 引用 方式 Url 服务 何更改 位置 | 更新日期: 2023-09-27 18:28:24

我有web服务:

http://127.0.0.1/something/someWS.asmx

我将此作为Web引用添加到我的应用程序中,但不会始终是Localhost。。。它可能会更改为http://www.something.com/something/someWS.asmx.

如何以编程方式更改Web引用的URL?它像一样简单吗

using (var service = new MyApi.MyApi())
{
    //txtUrl is the site
    service.Url = "http://" + txtUrl + "something/someWS.asmx";
}

此外,一旦我更改了它,我如何以编程方式更新它?(相当于右键单击并选择"更新Web参考")

附带说明:我试图最终完成的是基于服务器上可用的asmx WebService(service.Url)

如何更改Web服务的位置(Url)并以编程方式更新Web引用

的可用方法的下拉

正如John Saunders所评论的那样,尝试与2个版本的服务进行对话的方式在技术上是不可能的。您正试图将编译/设计时操作("更新Web引用")与运行时操作混合使用。

简单的方法是将问题视为与提供类似数据的两个完全不同的数据源进行对话。这是一种经过充分研究的方法,有大量的样本——数据存储库是搜索术语之一。

实施:

  • 每个服务版本一个web参考
  • 公开您需要的数据的接口(您可以从web服务获得的接口)
  • 每个web引用的一个接口实现
  • 拥有接口实现的集合(即,将友好名称映射到接口实现的字典),允许选择任何数据源

代码:

interface IMyData 
{
      string GetLastName();
}
class MyDataFromOldWebService
{
    MyApi.MyApiV1 service;
    MyDataFromOldWebService(MyApi.MyApiV1 service)
    {
      this.service = service;
    }
    public string GetLastName()...
}
Dictionary<string, IMyData> services = new Dictionary<string, IMyData>()
  {
      { "Old Service", new MyDataFromOldWebService(new MyApi.MyApiV1(url))}
  };