Развернуть настраиваемую веб-службу на сервере sharepoint (2007/2010)?

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

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


person leif    schedule 14.01.2010    source источник


Ответы (3)


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

person Greg Hurlman    schedule 14.01.2010
comment
Вы можете получить WSDL из ASMX - person Jeroen Ritmeijer; 15.01.2010
comment
Вы можете получить его, только если попытаетесь получить к нему доступ с того же хоста. От клиента вы не сможете получить WSDL через ASMX. - person Hinek; 23.09.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/)
person naivists    schedule 14.01.2010
comment
Спасибо, раздел вашей ссылки еще раз о контексте отвечает на мой вопрос. - person leif; 15.01.2010

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

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

В частности, wsdisco.aspx и wswsdl.aspx обрабатывают запросы к этому виртуальному каталогу и вызывают соответствующие disco.aspx и wsdl.aspx для правильного создания XML-файла обнаружения или XML-файла wsdl на основе текущего 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?

person Michael M    schedule 17.01.2012