Сохранение вложения электронной почты по пути UNC

У меня есть следующий код в надстройке VSTO, которую я пишу для Outlook:

        savefolder = Regex.Replace(Guid.NewGuid().ToString(), @"[- ]", String.Empty);

        savepathfull = string.Format(@"{0}{1}", netloc, savefolder);
        DirectoryInfo di = new DirectoryInfo(@savepathfull);
        if (!(di.Exists))
            Directory.CreateDirectory(@savepathfull);



        removedFiles = new List<string>();

        for (int d = attachs.Count; d > 0; d--)
        {
            if (attachs[d].Size > smallAttachment)
            {
                removedFiles.Add(attachs[d].FileName);
                attachs[d].SaveAsFile(savepathfull);
            }
        }

Все работает нормально, пока я не попытаюсь сохранить вложение, после чего я получаю исключение UnauthorizedAccessException. Я знаю, что у моего тестового пользователя есть полные права на папку, но я все равно получаю эту ошибку.

Идеи?

Спасибо.


person Larry G. Wapnitsky    schedule 07.12.2011    source источник
comment
какая строка выдает исключение? Вы также можете опубликовать сообщение об исключении и трассировку стека?   -  person Adam Ralph    schedule 08.12.2011
comment
Я также попытался бы удалить каталог, который там находится, и посмотреть, не возникают ли ошибки в переносе Directory.CreateDirectory, что оператор if в {}, чтобы вы могли захотеть сделать дополнительные вещи, лучше обернуть его в Try catch, не предполагайте, что код не будет ошибкой .. если он вернет ошибку, то, вероятно, это проблема с правами/разрешениями. У вас есть доступ к сетевому ресурсу или папке ..?   -  person MethodMan    schedule 08.12.2011
comment
Меня смущает ваша реализация. savepathfull это файл или каталог? Похоже, вы используете его как (Directory.CreateDirectory(@savepathfull); и attachs[d].SaveAsFile(savepathfull);).   -  person SliverNinja - MSFT    schedule 08.12.2011
comment
@SliverNinja — Outlook.Attach.SaveAsFile использует путь в качестве своей переменной.   -  person Larry G. Wapnitsky    schedule 08.12.2011
comment
@AdamRalph — прикрепляет[d].SaveAsFile(savepathfull)   -  person Larry G. Wapnitsky    schedule 08.12.2011
comment
@DJKRAZE - у меня полные права и каталог создается без проблем   -  person Larry G. Wapnitsky    schedule 08.12.2011
comment
Я думаю, вам стоит взглянуть на операции Path.*. Когда вы отправляете полный путь к файлу методу создания каталога, вы можете создать каталог с полным путем к файлу. Таким образом, вы не можете создать файл, так как это уже каталог. Или озабоченность @SilverNinja.   -  person kenny    schedule 08.12.2011


Ответы (1)


Вы должны указать действительное имя файла при вызове Attachment.SaveAsFile. Вы пытаетесь сохранить в каталог, а не в файл. справочный код см. в MSDN.

attachs[d].SaveAsFile(Path.Combine(savepathfull, attachs[d].DisplayName);
person SliverNinja - MSFT    schedule 07.12.2011
comment
Согласен с @AdamRalph. IDE только указывает (строковый путь) как переменную. Думаю, мне следовало сначала проверить MSDN. - person Larry G. Wapnitsky; 08.12.2011