Как найти URL-адрес корневого сайта в проекте Share Point 2010? - PullRequest
1 голос
/ 09 мая 2011

Есть ли способ получить корневой URL текущего сервера, на котором размещено приложение Share Point?Например, если я хочу загрузить информацию с сайта, я в данный момент набираю:

SPSite site = new SPSite(http://dev3);

Но когда я перемещаю код разработки на рабочий сервер, я должен вручную заменить URL-адреса сайта новым серверомURL-адреса:

SPSite site = new SPSite(http://sp2010);

Я использую C # в Visual Studio 2010.

Ответы [ 7 ]

6 голосов
/ 09 мая 2011

Я не уверен, правильно ли я понял ваш контекст, но вы сможете использовать SPContext свойство .

SPContext.Current.Site.Url;
4 голосов
/ 09 мая 2011

Если вы хотите получить имя хоста текущего компьютера, это:

System.Net.Dns.GetHostName()

Если вы ищете что-то с помощью объектной модели SharePoint, попробуйте следующее:

new SPSite(SPServer.Local.Address.ToString())
2 голосов
/ 10 мая 2011

Итак, проблема, с которой вы сталкиваетесь, заключается в том, что код должен адаптироваться к различным URL-адресам в разных средах?

Есть два способа справиться с этим

  1. Убедитесь, что URL-адреса одинаковы во всех средах, используя заголовок узла в IIS. Это приведет к тому, что URL-адреса будут одинаковыми как на компьютере DEV, так и на компьютере PROD.(На компьютере DEV вам также необходимо настроить BackConnectionHostNames в реестре, чтобы он работал нормально, поскольку вы будете входить в окно DEV и работать оттуда локально).[1] http://www.it -notebook.org / iis / article / понимание_host_headers.htm [2] http://support.microsoft.com/kb/896861

  2. Но более стандартный (и реалистичный) способ решенияэто позволит сохранить имя корневого сайта в файле конфигурации и позволить коду забрать его оттуда.Для разных сред вам просто нужно пойти и обновить файл конфигурации.Вы также можете автоматизировать это, настроив свой установщик для замены строк в зависимости от среды, в которую он устанавливается.Преимущество, которое вы получаете, состоит в том, что вы не жестко программируете URL-адрес, и логика не зависит от имени хоста сервера (наверняка будут сценарии, где используется заголовок хоста, или альтернативное сопоставление доступа, приводящее к URL-адресуотличается от имени хоста вашего сервера).Таким образом, вы получите лучшую связь.

Только мои два цента.

1 голос
/ 20 ноября 2012

Для меня эти подсказки не сработали.У меня есть несколько семейств сайтов, и вместо использования информации DNS я обнаружил, что безопаснее получить URL самого верхнего семейства сайтов веб-приложения, например:

[current SPWeb].Site.WebApplication.AlternateUrls[0].IncomingUrl

или (длиннее, и в результате получается URL с завершающимкосая черта):

[current SPWeb].Site.WebApplication.AlternateUrls[0].Uri.AbsoluteUri
0 голосов
/ 25 июля 2016

Осторожно!

Хотя первый элемент в семействе WebApplication.Sites обычно является корневым семейством сайтов, он не обязательно будет нулевым элементом [0], если вам удастся удалить и заново создать корневое семейство сайтов после того, как другие семейства сайтовбыл создан.Более надежный способ - ссылаться на семейство сайтов, используя корневой URL-адрес, например:

WebApplication.Sites["/"]

Кроме того, задания таймера SharePoint выполняются в контексте веб-приложения.Итак, для задания таймера:

using (SPSite site = this.WebApplication.Sites["/"])
{
}
0 голосов
/ 20 сентября 2013

Это приведет вас на домашнюю страницу любого сайта или дочернего сайта. Вместо домашней страницы корневого сайта.

0 голосов
/ 10 мая 2011

Если вы хотите получить все веб-приложения на компьютере, вы можете получить эту коллекцию:

Microsoft.SharePoint.Administration.SPWebService.ContentService.WebApplications

Для правильной оценки, вот как вы получаете административные веб-приложения:

Microsoft.SharePoint.Administration.SPWebService.AdministrationService.WebApplications

Используя эти подходы, вы сможете пройти долгий путь к жесткому кодированию URL-адресов семейства сайтов в вашей кодовой базе.

...