Динамически задать URL-адрес веб-службы

сценарий: я запускаю код на клиенте, который подключается к серверу и использует веб-сервис для получения данных о списке SharePoint. Я использую Visual Studio 2010 "Service reference" для получения веб-службы для моего сайта SP и получения моих данных из списка. Это работает. Теперь, как я могу кодировать его так, чтобы, когда я хочу перейти от теста к производству, мои вызовы веб-службы все еще будут работать? Обратите внимание, что веб-служба является веб-службой SharePoint, я ее не писал. Я только использую его. Есть что я предлагаю возможно? У меня есть возможность убедиться, что сайт точно такой же (за исключением URL-адресов) в обеих средах (например, резервное копирование сайта SP и его запуск). Спасибо за любые предложения.

резюме:

в основном я ищу лучший способ перейти от теста к производству без повторной компиляции моего кода, который потребляет веб-службу SP. Кроме того, в качестве примечания, если кто-нибудь знает, насколько похожи тестовые / производственные сайты sharepoint быть, [для того, чтобы веб-служба работала над обоими, не изменяя ничего, кроме URL-адреса].. это была бы полезная информация.

решение

файл конфигурации проекта можно использовать для указания расположения веб-службы. Этот.svcdatamap и другие файлы в проекте VS предназначены только для использования во время разработки, а URL-адрес, который фактически используется для подключения к веб-службе SharePoint, передается в качестве аргумента

4 ответов


насколько я знаю, инструменты Visual Studio для офисных проектов позволяют вам иметь приложение.конфигурационный файл в вашем проекте. Я ожидал, что Visual Studio создала приложение.конфигурационный файл и добавлены необходимые параметры конфигурации, связанные со ссылкой на веб-службу. В любом случае, вам нужно сохранить правильный url веб - службы где-нибудь-приложение.config, реестр или даже база данных.

Если вы не можете сохранить информацию об адресе конечной точки веб-службы в приложении.конфигурационный файл, есть способ настроить прокси вручную.

  1. Если это .ссылка asmx добавлена как устаревшая "веб-ссылка" в Visual Studio, тогда все, что вам нужно сделать, это установить значение свойства Url прокси-объекта перед вызовом любых методов веб-службы. Например:

    MyASMXWebService proxy = new MyASMXWebService();
    proxy.Url = "web service url";
    proxy.HelloWorld();
    
  2. Если это .ВПВ ссылки на службу WCF, то все становится немного сложнее. Конечную точку веб-службы необходимо создать программным способом. Для пример:

    BasicHttpBinding binding = new BasicHttpBinding();
    EndpointAddress endpoint = new EndpointAddress("web service url");
    
    ChannelFactory<IMyWCFWebService> factory = new ChannelFactory<IMyWCFWebService>(binding, endpoint);
    IMyWCFWebService proxy = factory.CreateChannel();
    
    proxy.DoWork();
    

поскольку службы SharePoint services (SVC) не предоставляют прокси-сервер, вариант 2 не будет работать. Ссылки на оба местоположения должны быть включены в приложение, а затем использовать parm для отличия производства от тестирования. Я считаю, что 2013 скорее исправить эту ошибку.


вам нужно отредактировать URL-адрес в интернете вашего проекта.config


простой пример SharePoint:

MyService.ListsSoapClient client = new MyService.ListsSoapClient();
client.Endpoint.Address = "site url"+"/_vti_bin/lists.asmx";