Не удается прочитать текстовые файлы из C: \ Testing \ Docs с помощью C # .Net - PullRequest
4 голосов
/ 15 июня 2011

У меня есть проект C # .Net 4.0, который должен читать текстовые файлы и анализировать их - очень просто.

Файлы находятся в C: \ Testing \ Docs

Когда я пытаюсьчтобы открыть текстовый файл в вышеуказанном каталоге, я получаю следующую ошибку:

Запрос разрешения типа 'System.Security.Permissions.FileIOPermission, mscorlib, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089 'не удалось.

Права доступа к файлам установлены на полный доступ, и я работаю от имени администратора.

Есть ли способ обойти это?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 15 июня 2011

Если вы развертываете приложение ClickOnce, появляется ошибка, потому что у вас нет соответствующего уровня доверия , необходимого для просмотра файлов.Это отличается от прав доступа к файлу.

Это можно решить одним из следующих способов:

  1. Добавьте в вашу программу следующий атрибут:

    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
    
  2. Изменение уровня доверия в свойствах вашего проекта.Короткий путь - просто отметьте «Это приложение с полным доверием», или вы можете пойти дальше и добавить права доступа к файлу вручную.

3 голосов
/ 15 июня 2011

Это не проблема с правами доступа к файловой системе - речь идет о «доверии» .

Это веб-приложение? Если это так, вам нужно повысить уровень доверия.

У вас также могут быть проблемы, если программа запускается из сетевого ресурса или загружает сборку из сетевого ресурса (хотя я думаю, что некоторые из этих правил изменились при жизни .Net 2).

Google .net 'полное доверие' - или, собственно, исключение, которое вы получаете - вы получите ответ.

Это тоже SO: System.Security.Permissions.FileIOPermission при использовании MEF для загрузки DLL

(Update)

Поскольку это не приложение Asp.Net, вам может потребоваться Запросить разрешение для именованного набора разрешений - запросить набор "FullTrust" в соответствии с приведенным примером.

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

Если, например, исполняемый файл (или DLL, запрашивающая это разрешение) был скопирован на целевой компьютер из ненадежного сетевого расположения, то он мог быть заблокирован ОС - в этом случае он будет вынужден бежать в частичном доверии. Вы можете попробовать шаги, описанные в этой статье на семи форумах , проверить каждый двоичный файл в папке приложения, чтобы убедиться, что ни один из них не был заблокирован, и, если это так, разблокировать их.

Затем попробуйте запустить его снова.

1 голос
/ 15 июня 2011

Это веб-приложение или приложение Winforms / Cosole.Для веб-приложения пользователь будет не администратором, а пользователем, под чьими привилегиями выполняется IIS.Вам может потребоваться предоставить этому пользователю / роли права на папку или файл.

...