Не удается прочитать файлы txt из C:TestingDocs использование C#.Net


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

Файлы находятся в C:TestingDocs

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

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

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

Есть ли какой-нибудь способ обойти это?

Спасибо.

3 4

3 ответа:

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

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

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

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

Это не проблема разрешений файловой системы - речь идет о "доверии" .

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

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

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

Есть и такая: система.Безопасность.Разрешения.FileIOPermission при использовании MEF для загрузки dll

(Обновление)

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

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

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

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

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