Доступ к удаленному файлу с помощью веб-части SharePoint

StackOverflow https://stackoverflow.com/questions/204149

  •  03-07-2019
  •  | 
  •  

Вопрос

Недавно я создал программу, которая анализирует удаленный файл из \some_server\c$\directory\file.xls и это прекрасно работает на моем локальном компьютере как обычная aspx-страница.

Затем я помещаю программу в веб-часть form на моей виртуальной машине SharePoint server, и я получаю эту ошибку:Доступ к пути '\some_server\c$\directory\file.xls' запрещен.

Файл является общедоступным для Домен\Аутентифицированные пользователи так что я не уверен, почему в этом было бы отказано?Возможно ли, что мой SharePoint пытается вызвать его с помощью учетной записи локальной или сетевой службы?Как я могу заставить его прочитать?Спасибо.

Это было полезно?

Решение

Salamander прав, SharePoint не работает с доверием для этого.

Изменение уровня доверия для SharePoint в его web.config с WSS_Medium на Full - это быстрое решение, но это имеет последствия для безопасности..

Другие советы

Просто небольшое замечание, возможно, вы столкнулись с классической проблемой двойного перехода NTLM.Вы можете пройти аутентификацию во внешнем интерфейсе, но поскольку у внешнего интерфейса нет вашего пароля, он не сможет пройти аутентификацию на ресурсе на другом сервере.

Запуск с повышенными привилегиями и настройка разрешений на основе идентификатора пула приложений могут быть одним из способов продвижения вперед.

Я думаю, вам понадобится RunWithElevatedPrivleges, который заставит SharePoint использовать учетную запись пула приложений.Также имейте в виду, что вам нужно будет убедиться, что учетная запись пула приложений имеет доступ к этому сетевому ресурсу.Избегайте использования полного доверия.

Можете ли вы подробнее объяснить, что именно установка уровня доверия делает для вас?

Я бы подумал, что если ваш идентификатор пула приложений является учетной записью домена, вы можете использовать SPSecurity.RunWithElevatedPrivileges использует учетные данные пула приложений для доступа к файлу.Или используйте impersonate для явной передачи учетных данных другой учетной записи.

SharePoint обычно работает в отдельном пуле приложений.Пожалуйста, проверьте подлинность этого пула приложений.

Я думаю, что для доступа к сетевому пути ваш код должен выполняться с ПОЛНЫМ ДОВЕРИЕМ, чего, я не думаю, делает SharePoint.

Почему бы не сохранить файл в SharePoint, чтобы у вас был лучший доступ к нему?Поместите его в скрытую библиотеку и получите к нему доступ с помощью SPSecurity.Запустите с увеличенными привилегиями.

В RWEP есть предостережения.Любая ссылка на SPSite и SPWeb, полученная из SPContext (т.Е. SPContext.Current.Site), по-прежнему будет выполняться с правами вошедшего в систему пользователя.Вы должны явно создать ссылку внутри делегата RWEP.

SPSecurity.RunWithElevatedPrivileges(делегировать() { используя (SPSite site = новый SPSite(SPContext.Current.Site.URL)) { использование (SPWeb web = сайт.OpenWeb()) { //...Сделайте что-нибудь с SPWeb } } });

Если вам нужно получить доступ к файлу извне sharepoint, чтобы обновить его с помощью существующих процессов, вы можете использовать путь к общему файловому ресурсу, который доступен для всех SPDocumentLibrary, но перейдите в меню Действия -> Открыть с помощью проводника Windows, чтобы получить сетевой путь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top