2011-01-25 2 views
0

Im пытается сохранить файл, который я загружаю из почтового ящика. Это hasnt были какие-то проблемы, но теперь, когда i'v построили GUI на моем Моделлом я получаю и исключение Авторизация:C# IO Exception

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 установить всех возможных пользователей есть все привилегии.

EDIT:

Я забыл упомянуть, что теперь с GUI я войти в путь_к_папке в простой TextBox. (Через FolderBrowserDialog)

ВТОРОЙ EDIT:

Im Runnig это на окна 7 и VS 2010. Thx за любую помощь! /Marthin

+0

Какой графический интерфейс это? – BrokenGlass

+0

Приложение Windows, пользователи заполняют информацию о подключении на сервере обмена, а почта с некоторыми и csv-файлами загружается и анализируется в БД. – Marthin

ответ

1

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

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

+0

Ваш правильный, по какой-то причине мой путь был неправильным. Я использовал 3: dpart lib для обработки всех путей и экономии. Должен прочитать мануал лучше, я думаю. Thx за помощь! – Marthin

1

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

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

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

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

1

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

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

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

+0

Это приложение для Windows. – Marthin

0

Возможные причины:

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

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

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

Смежные вопросы