C # IO Exception - PullRequest
       45

C # IO Exception

0 голосов
/ 25 января 2011

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

Saved file: C:\TempNorlander
System.UnauthorizedAccessException: Access to the path 'C:\TempNorlander' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode)
   at a.a0.b(String A_0, Byte[] A_1, Int32 A_2, Int32 A_3)
   at MailBee.Mime.Attachment.Save(String filename, Boolean overwrite)
   at Mail2DB.Connect2Exchange.CollectData() in C:\Users\marthin\documents\visual studio 2010\Projects\Mail2DB\Mail2DB\Connect2Exchange.cs:line 210

Я не могу понять, в чем здесь проблема. В папке iv set все возможные пользователи имеют все привилегии.

EDIT:

Я забыл упомянуть, что теперь с графическим интерфейсом я ввожу путь к папке в простом текстовом поле. (через FolderBrowserDialog)

ВТОРОЕ РЕДАКТИРОВАНИЕ:

Я запускаю это на Windows 7 и VS 2010. Спасибо за любую помощь! / Marthin

Ответы [ 4 ]

1 голос
/ 26 января 2011

Сохраненный файл: C: \ TempNorlander

Вы пытаетесь сохранить файл с тем же именем, что и папка. Это не разрешено, UnauthorizedAccessException является результатом. Исправьте имя файла, скажем, в C: \ TempNorlander \ mumble.txt

1 голос
/ 25 января 2011

Предполагается, что это веб-проект - по умолчанию ваш проект будет работать под IIS DefaultAppPool, у которого нет прав на чтение произвольного файла на вашем HD. Вы можете исправить это с помощью

  1. специально разрешить AppPool доступ к папке / файлу путем добавления права в проводнике
  2. используйте олицетворение для чтения файла под полномочиями другого Пользователь
  3. использовать другую личность для вашего приложение в IIS путем создания другой пул приложений или изменение идентификатора существующего.

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

1 голос
/ 25 января 2011

Ошибка вполне понятна:

Доступ к пути 'C: \ TempNorlander' запрещен.

Пользователь, выполняющий этот процесс, не имеет прав доступа к этой папке.

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

0 голосов
/ 26 января 2011

Вероятные причины:

  1. Вы не можете создать файл в C: (что, кстати, не стоит)
  2. Этот файл уже открыт в другом процессе или в приложении.
  3. Вы пытаетесь перезаписать существующий файл и не можете

Может быть, вы хотели бы решить задачу, которую вы действительно пытаетесь выполнить. Например, сохраните некоторые данные во временный файл, к которому можно получить доступ в том же сеансе. Или добавьте файл постоянных данных для приложения ASP.NET, к которому можно получить доступ при последующем вызове.

Например, если это настольное приложение и вам нужно создать временный файл для сохранения данных, вы должны использовать для этого Path.GetTempFileName .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...