Получение (общедоступного) URL-адреса в Интернете для сайта портала Sharepoint

У меня есть собственный рабочий процесс infopath, который позволяет пользователям отправлять отчеты Expesne. Каждый раз, когда кто-то отправляет отчет о расходах в библиотеку форм, запускается рабочий процесс. Рабочий процесс проверяет веб-адрес и с помощью универсального метода создает ссылку, указывающую на элемент рабочего процесса, и отправляет эту ссылку по электронной почте отправителю и утверждающим.

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

Итак, я думаю, что вкратце мне нужен способ получить общедоступный URL-адрес для сайта. Также помните, что сайт может быть расширен для Интернета с некоторыми настройками безопасности. Что было бы самым простым и эффективным способом сделать это.


person Community    schedule 04.04.2009    source источник


Ответы (3)


Относительный путь вашей Страницы или Ссылки будет одинаковым независимо от Зоны, из которой пользователь получает доступ к Сайту. Все, что вам нужно изменить в URL-адресе, - это часть имени хоста.

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

SPContext.Current.Site.WebApplication.GetResponseUri(Microsoft.SharePoint.Administration.SPUrlZone.Default).AbsoluteUri
person Kusek    schedule 16.06.2009

Вы можете быть уверены, что всегда получаете URL-адреса из определенной зоны, создав новый объект SPSite и указав для него зону в конструкторе. В вашем случае вы можете попробовать использовать зону по умолчанию (например, SharePoint использует URL-адреса из этой зоны при отправке писем) или зону Интернет. У вас есть небольшой образец ниже:

using(SPSite site = new SPSite(currentSiteId, SPUrlZone.Default)
{
    string publicUrl = site.MakeFullUrl(serverRelativeUrl);
    // note that MakeFullUrl takes a server relative url not a site relative one
}
person Soda    schedule 18.06.2009

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

Вот что я бы сделал: я бы создал простой веб-сайт с DNS, на котором была бы одна страница, представляющая объект рабочего процесса. Таким образом, вы можете просто использовать этот сайт в качестве основы для ссылки в уведомлении.

Пример: у меня есть движок HTML-форм, который я написал некоторое время назад. Клиент просто попросил, чтобы он также был доступен в Интернете. Я создал новый сайт в IIS, произвел обратное проксирование IP-адреса, и вуаля, мое приложение интрасети доступно в Интернете. Конечно, есть проблемы с безопасностью и небольшие проблемы в интранете, о которых нужно было позаботиться, но ничего особенного.

Надеюсь, это поможет.

person theG    schedule 15.04.2009