How to change Location(Url) of a Web Service and Update Web Reference programmatically?

℡╲_俬逩灬. 提交于 2019-12-19 11:44:27

问题


I have web service:

http://127.0.0.1/something/someWS.asmx

I am adding this as a Web Reference to my app but wont always be Localhost... it might change to http://www.something.com/something/someWS.asmx.

How do I change the URL programmatically of my Web Reference? is it as simple as:

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

ALSO, once I change it, how do I update it programmatically? (equivalent to right-clicking and selecting "Update Web Reference")

side-note: What I am trying to ultimately accomplish is dropdowns of the available methods based on the asmx WebService available on the server (service.Url)


回答1:


As John Saunders commented the way you trying to take to talk to 2 versions of a service is not technically possible. You are trying to mix compile/design time action ("update Web reference") with runtime one.

Easy approach would be to look at the problem as talking to 2 completely different data sources providing similar data. This is well researched approach with plenty of samples - data repository is one of the search terms.

Implementation:

  • one web reference per version of the service
  • an interface that exposes data you need (the one you can obtain from web service)
  • one implementation of the interface per web reference
  • have collection of interface implementations (i.e. dictionary to map friendly name to interface implementation) that allows to pick any data source.

Code:

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))}
  };


来源:https://stackoverflow.com/questions/18321744/how-to-change-locationurl-of-a-web-service-and-update-web-reference-programmat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!