Динамически устанавливаемый URL-адрес веб-службы - PullRequest
6 голосов
/ 23 июля 2011

Сценарий: я запускаю код на клиенте, который подключается к серверу и использует веб-службу для получения данных о списке SharePoint. Я использую «Справочник по сервисам» Visual Studio 2010, чтобы получить веб-сервис для моего сайта SP и получить данные из списка. Оно работает. Теперь, как мне сделать так, чтобы при переходе от Test к Production мои вызовы веб-службы продолжали работать? Обратите внимание, что веб-сервис является веб-сервисом SharePoint, я не писал его. Я только использую это. Возможно ли то, что я предлагаю? У меня есть возможность убедиться, что Сайт одинаков (кроме URL-адресов) в обеих средах (например, создать резервную копию сайта SP и запустить его в производство). Спасибо за любые предложения.

Резюме:

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

Решение

Файл конфигурации проекта можно использовать для указания местоположения веб-службы. .Svcdatamap и другие файлы в проекте VS предназначены только для времени разработки, а URL-адрес, который фактически используется для подключения к веб-службе SharePoint, передается в качестве аргумента объекту System.Data.Services.Client.DataServiceContext. Это только косвенно связано, но чтобы создать свой собственный веб-сервис WCF, смотрите эту ссылку . Кстати, веб-служба будет работать без перекомпиляции везде, где список SharePoint имеет то же имя списка, а запрашиваемый столбец - то же имя.

Ответы [ 4 ]

15 голосов
/ 25 июля 2011

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

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

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

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

    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();
    
1 голос
/ 26 ноября 2012

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

0 голосов
/ 02 июля 2014

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

MyService.ListsSoapClient client = new MyService.ListsSoapClient();
client.Endpoint.Address = "site url"+"/_vti_bin/lists.asmx";
0 голосов
/ 23 июля 2011

Вы должны отредактировать URL в файле вашего проекта web.config

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...