Ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus

Ma méthode web crée un fichier pdf dans mon dossier %temp% et qui fonctionne. Ensuite, je tiens à ajouter quelques champs personnalisés (meta) de ce fichier à l'aide du code ci-dessous.

La classe PdfStamper génère un IOException, si je utiliser sa .Close() méthode ou la using bloc se termine juste. Le processus qui maintient encore sur pour le descripteur de fichier est l'webdev serveur web lui-même (je suis de débogage dans VS2010 SP1).

private string AddCustomMetaData(string guid, int companyID, string filePath)
{
    try
    {
        PdfReader reader = new PdfReader(filePath);

        using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
        {
            PdfStamper st = new PdfStamper(reader, fs);
            Dictionary<string, string> info = reader.Info;
            info.Add("Guid", guid);
            info.Add("CompanyID", companyID.ToString());

            st.MoreInfo = info;
            st.Close();
        }

        reader.Close();

        return guid;
    }
    catch (Exception e)
    {
        return e.Message;
    }
}

Peu importe ce que j'essaie, elle continue de jeter de l'exception à st.Close();, pour être plus précis:

Le processus ne peut pas accéder au fichier 'C:\Users[mon
nom d'utilisateur]\AppData\Local\Temp\53b96eaf-74a6-49d7-a715-6c2e866a63c3.pdf"
car il est utilisé par un autre processus.

Soit je suis donnant sur quelque chose d'évident ou il y a un problème avec le PdfStamper classe je suis encore pas au courant de. Les Versions de itextsharp utilisés sont 5.3.3.0 et 5.4.0.0, le problème est le même.

Toute réflexion serait grandement apprécié.

EDIT: je suis en train de "codage autour de" la question, mais je n'ai pas trouvé de solution.

  • êtes-vous sûr que le fichier n'est pas utilisé, avant de le pdf reader s'ouvre il? (comme dans ce que vous faites avec ce fichier avant cela)
  • mieux encore, essayez de changer l'ordre de vos ouverture de fichier (filestream avant pdf reader)
InformationsquelleAutor Wim Ombelets | 2013-03-25