Удаленный доступ к файлам со страницы приложения Sharepoint - PullRequest
0 голосов
/ 02 сентября 2011

На моей странице приложения Sharepoint я пытаюсь скопировать файл из общей сетевой папки .. И мой код, как показано ниже ..

    try
    {
        File.Copy("\\MShare\Public\Test.txt", "C:\Temp\Test.txt", true);
        LblMessage.Text = "File copied.";
    }
    catch (Exception ex)
    {
        LblMessage.Text = ex.ToString() + " - " + ex.Message;
    }

Работает хорошо, если я тестирую тот же код на веб-сайте ASP.NET. Но я получаю ошибку, как следует из страницы приложения SP ..

System.UnauthorizedAccessException: Access to the path '\\MShare\Public\Test.txt' is denied. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite) at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite) at TestApp.PullingFile.ButGet_Click(Object sender, EventArgs e) - Access to the path '\\MShare\Public\Test.txt' is denied.

Я пытался реализовать олицетворение, следуя этой записи .. Не работает .. И я попытался изменить в web.config с <trust level="WSS_Medium" originUrl="" /> также ..

1 Ответ

0 голосов
/ 02 сентября 2011

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

Что вы можете сделать, это вернуться к учетным данным системных учетных записей , чтобы получить доступ к файловой системе:

SPSecurity.RunWithElevatedPrivileges(() =>
{
    File.Copy("\\MShare\Public\Test.txt", "C:\Temp\Test.txt", true);
});

Что нужно иметь в виду:

  1. Системная учетная запись (учетная запись пула приложений) не обязательно имеет доступ к файловой системе (сценарий с наименьшими привилегиями). ( ТАК вопрос )
  2. Системная учетная запись (учетная запись пула приложений) не обязательно имеет доступ к общей сетевой папке.
  3. Любой пользователь, имеющий доступ к вашей странице приложения, может выполнить ваш код копирования файла. Вы должны заботиться о разрешении самостоятельно.

Последнее, но не менее важное :
Почему вы все-таки должны скопировать файл в файловую систему сервера? Вам это нужно физически на сервере или это просто временно (как можно догадаться по пути).

...