1

我有网络服务:

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) 的可用方法的下拉列表

4

1 回答 1

1

正如 John Saunders 评论的那样,您尝试与服务的 2 个版本交谈的方式在技术上是不可能的。您正在尝试将编译/设计时操作(“更新 Web 参考”)与运行时操作混合。

简单的方法是将问题视为与提供相似数据的 2 个完全不同的数据源交谈。这是一种经过充分研究的方法,有大量样本——数据存储库是搜索词之一。

执行:

  • 每个版本的服务有一个 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))}
  };
于 2013-08-19T20:35:10.600 回答