Как интегрировать документ sharepoint в веб-приложение и добавить учетные данные для внешних пользователей - PullRequest
0 голосов
/ 09 сентября 2010

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

У меня есть страница в моем веб-приложении, которая должна отображатьдокумент из sharepoint.

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

Компания% 20Hire / Hire% 20Site% 20Price% 20Lists / 0.pdf

В нашей сети я могу сделать следующее:

iframePdf.Атрибуты [

"src"] = ConfigurationManager.AppSettings ["SharepointUrl"] + _filePath;

Это будет отображать документ в iframe ... у меня есть проблема из-за пределов сетиСайт sharepoint недоступен (из-за брандмауэров и т. д.).

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

Есть ли способ для веб-приложения использовать vpn, используйте предоставленные мной учетные данные(например, через олицетворение), чтобы получить доступ к документу и показать его внешним клиентам?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2010

Я решил это, выполнив следующее:

Я использовал класс веб-клиента, который позволяет вам добавлять учетные данные, и я просто вызвал метод загрузки файла. Затем получил другую страницу для чтения PDF-файла из сохраненного местоположения (местоположение сохранено в переменной сеанса) и записи файла в поток ответов.

Следующий код сделал это:

    using (var _webclient = new WebClient())
            {
                _webclient.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["DomainUsername"],ConfigurationManager.AppSettings["DomainPassword"],
"domain");

                _webclient.DownloadFile(ConfigurationManager.AppSettings["SharePointPortal"] + _filePath, _path);                
            }

            Portal.Common.Objects.CommonSessionHelper.Instance.IframeUrl = _path; 

            iframePdf.Attributes["src"] = "PdfEmbedder.aspx";

Pdfembeder.aspx.cs как:

protected void Page_Load(object sender, EventArgs e)
{
    try
    {            
        if (!String.IsNullOrEmpty(Portal.Common.Objects.CommonSessionHelper.Instance.IframeUrl))
        {
            Response.Clear();
            Response.ContentType = "application/pdf";
            Response.WriteFile(Portal.Common.Objects.CommonSessionHelper.Instance.IframeUrl);            
            Response.Flush();
            Response.Close();
            Portal.Common.Objects.CommonSessionHelper.Instance.IframeUrl = null;
        }
    }
    catch (Exception error)        
    {
        Response.Write(error.Message);
    }
}
0 голосов
/ 09 сентября 2010

Возможно, вы захотите внедрить в свое веб-приложение обработчик, который отвечает за загрузку документов из SharePoint и их потоковую передачу по сети.

Одним из наиболее удобных классов для загрузки контента является System.Net.WebRequest . Этот учебник может помочь вам начать работу с пользовательским обработчиком HTTP. На ваших веб-страницах вы предоставляете своим пользователям гиперссылки на обработчик HTTP, например, с параметрами строки запроса, определяющими файл для загрузки. Ваш обработчик будет загружать файл, устанавливать соответствующие типы контента и расположение контента в ответе и копировать биты ответа веб-запроса в поток ответа.

Свойство Credentials WebRequest важно для аутентификации вашего клиента в SharePoint. Это немного сложно, если вы используете встроенную проверку подлинности Windows NTLM, из-за проблемы двойного прыжка . Вы можете обойти двойной переход несколькими способами, включая явный запрос учетных данных пользователя (через форму), реализацию Kerberos или самостоятельную обработку авторизации при выдаче себя за фиксированного привилегированного пользователя.

Удачи!

...