0
votes

'System.IO.FilenotFoundException' Lorsque vous essayez d'enregistrer une pièce jointe Outlook

J'ai construit une petite application Web pour lire des rendez-vous à partir de Outlook Calendar et j'ai utilisé Microsoft.Office.interop.outlook code>. Maintenant, je veux pouvoir enregistrer les pièces jointes qui sont à l'intérieur du rendez-vous.

Voici mon code jusqu'à présent: p>

foreach (var item in AppointmentItems) {    
    for (int i = 1; i <= item.Attachments.Count; i++) {

        var Attachment = item.Attachments[i];

        string SavePath = Path.Combine(@"D:\SaveTest", Attachment.FileName);

        Attachment.SaveAsFile(SavePath);
    }
}


3 commentaires

Est-ce que le répertoire D: \ Savetest \ existe?


@mmathis ouais je m'assisais de cela en premier, et je vérifie maintenant si j'ai l'écriture d'accès


Aucune application Office (Outlook incluse) peut être utilisée à partir d'un service (tel que IIS).


3 Réponses :


3
votes

En supposant que l'attachement existe, filenotfoundexecpe code> est déclenché par une partie non existante de votre chemin. Vous pouvez vérifier si le chemin existe d'abord:

Try
{
return System.IO.Directory.GetAccessControl(@"D:\SaveTest")
        .GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount))
        .Cast<System.Security.AccessControl.FileSystemAccessRule>()
        .Where(rule => (System.Security.AccessControl.FileSystemRights.Write & rule.FileSystemRights) == System.Security.AccessControl.FileSystemRights.Write)
        .Any(rule => rule.AccessControlType == System.Security.AccessControl.AccessControlType.Allow);
} catch(Exception)
{
  return false;
}


2 commentaires

Je suis à peu près sûr que les droits d'écriture sont là parce que j'ai essayé WriteAlltext et d'autres méthodes d'écriture et de suppression de méthodes pour vérifier si j'ai les droits de lire ou d'écrire, la chose que la pièce jointe est sauvegardée, puis supprimée directement car j'atteigne la pièce jointe. Savesfile (Enregistrer le chemin); EDIT: TYPO


Pouvez-vous jeter un coup d'oeil à ce Stackoverflow.com/questions/ 31072981 / ... ?



0
votes

System.IO.FilenotfoundFoundExeCense signifie qu'il ne peut pas trouver le fichier que vous recherchez ou le chemin que vous essayez d'enregistrer dans votre cas. Supprimer @ et essayez "d: \ foldername \" + pièce jointe.filename. Bien que l'élimination @ devrait toujours fonctionner, je pense que vous avez besoin d'un opérateur plus. Vous aiderait à poster tout le bloc de code afin que nous puissions comprendre ce qui se passe de haut en bas.


0 commentaires

1
votes

3 choses que vous pourriez essayer de faire:

  1. Assurez-vous que Répertoire existe

  2. Vérifiez si pièce jointe.filename a des noms et une extension valides

  3. vérifier votre Accès en écriture


0 commentaires