Развернуть пользовательский веб-сервис на сервере sharepoint (2007/2010)? - PullRequest
2 голосов
/ 14 января 2010

Согласно MSDN, для развертывания пользовательского веб-сервиса нам нужно создать файлы * wsdl.aspx и * disco.aspx и поместить их вместе с .asmx в папку _vti_bin (C: \ Program Files \ Common Files \ Microsoft Shared \ Расширения веб-сервера \ 14 \ isapi). И поместите dll в папку bin корневого каталога виртуальной папки sharepoint. У меня работает правильно.

Однако я также обнаружил, что если я помещаю файл .asmx в корневой виртуальный каталог, не создавая файлы * wsdl.aspx и * disco.aspx. Это может работать так же и намного проще, чем вышеописанный способ. Так что мне интересно, каковы потенциальные проблемы на этом пути?

Ответы [ 3 ]

2 голосов
/ 14 января 2010

Без файлов WSDL и DISCO, клиентам / потребителям веб-сервисов людей может быть трудно "обнаружить" контракт вашей службы. Если это вас не беспокоит, не беспокойтесь об этом.

1 голос
/ 14 января 2010

Я создал несколько веб-служб в SharePoint 2007, которые были просто развернуты как http://.../_layouts/mySubFolder/service.asmx. Оно работает! Для SharePoint не имеет значения, является ли уровень представления HTML или XML для веб-службы (в обоих случаях должна применяться защита, можно указывать как http://server/_layouts/mySubFolder/service.asmx и http://server/sites/subsite/_layouts/mySubFolder/service.asmx

То, что неправильно что-то об этом

  • слово «макеты» подразумевает «что-то общее с тем, как оно выглядит»… что не так, когда мы говорим о веб-сервисах
  • при переходе на SPS2010, где вступают в действие службы WCF, все будет иначе. Однако я еще не играл с SPS2010 и пока не знаю, насколько отличается. (Что-то об этом здесь - http://blog.mastykarz.nl/wcf-sharepoint-context/)
0 голосов
/ 17 января 2012

Довольно старый пост, но я подумал, что я бы добавил к этому, поскольку я не думаю, что ответы на сегодняшний день дают соответствующую информацию о том, почему SharePoint настроен таким образом.

Причина, по которой вы развертываете веб-сервисы в ISAPI \ vti_bin для SharePoint, заключается в том, что в запросы к этой папке были внесены конкретные изменения, позволяющие SharePoint создать точное обнаружение и файл WSDL для службы на основе текущего виртуального пути службы , а не путь на сайте IIS.

В частности, wsdisco.aspx и wswsdl.aspx обрабатывают запросы к этому виртуальному каталогу и будут вызывать соответствующие disco.aspx и wsdl.aspx для правильной генерации xml или wsdl xml обнаружения на основе текущего URL-адреса SharePoint.

Если вы добавите сервисную ссылку в свой проект для http://sharepointsite.com/sitecol/subsite/_vti_bin/lists.asmx, то контекст для запросов, сделанных по этому URL, будет относиться к / sitecol / subsite, как и следовало ожидать.

Однако, если вы добавите ссылку на службу к http://sharepointsite.com/sitecol/subsite/_layouts/MyCustSvc.asmx, контекст будет зафиксирован на http://sharepointsite.com/, поскольку генератор wsdl по умолчанию для ASP.NET не знает о виртуальных путях SharePoint. В этом случае вызовы SPContext в службе не будут работать должным образом.

Здесь есть отличный пост с примерами, объясняющими это: Где вы развертываете файлы пользовательских веб-служб SharePoint?

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