Так в чем же проблема с развертыванием этой веб-службы в различных размещенных (и разных физических местах) и изменением URL-адреса конечной точки веб-службы в вашем клиенте SOAP из вашего вызывающего кода?
Или я упускаю суть вашего вопроса?
Хорошо, прочитав ваш комментарий, вот еще несколько указателей.
Все, что делает Add Web Reference, это генерирует прокси-клиента SOAP в вашем файле Reference.cs. Поскольку контракт для них один и тот же, вам нужно сделать это только один раз.
Затем, если вы задали использование клиентского прокси-сервера SOAP в коде вызова, установите для URL-адреса соответствующую конечную точку .asmx (загрузите ее из пользовательской конфигурации XML или web.config):
YourWebServiceClient client = new YourWebServiceClient();
client.Url = "http://server/webservice/yourendpoint.asmx"; // get from config
string[] filenames = client.GetFileList();
Это все, что тебе нужно сделать. Надеюсь, это поможет.
Также - убедитесь, что для разных веб-сервисов вы не меняете пространство имен веб-сервиса. Держите это так же. Может оказаться более удобным использовать пространство имен URN, а не URI, так как соблазнительно изменить пространство имен с URI, чтобы оно соответствовало URL-адресу веб-службы, однако в этом нет необходимости.
Так, например, пометьте свой веб-сервис, используя пространство имен URN:
[WebService(Namespace = "urn:your:mywebservice")]
И разверните тот же веб-сервис в различных местах.