Fichier est utilisé par un autre processus après le Fichier.Copie

Je suis en train de gérer les fichiers dans mon application web. Parfois, je dois créer un fichier dans un dossier (avec "Fichier".Copy):

File.Copy(@oldPath, @newPath);

Et quelques secondes plus tard que le fichier peut être supprimé:

if (File.Exists(@newPath)) {
  File.Delete(@newPath);            
}

Cependant, je ne sais pas pourquoi le nouveau fichier reste bloqué par le processus serveur (IIS, w3wp.exe) après le Fichier.Copie. Après De Fichier.Supprimer-je obtenir de l'exception:

"Le processus ne peut pas accéder au fichier car ce fichier est utilisé par
un autre processus."

Selon l'Api, File.La copie ne pas bloquer le fichier, est-il?

J'ai essayé de libérer les ressources, mais il n'a pas fonctionné. Comment puis-je résoudre ce problème?

Mise à JOUR: en Effet, à l'aide de l'Explorateur de Processus le fichier est bloqué par des processus IIS. J'ai essayé de mettre en œuvre le code de copie afin de libérer manuellement les ressources, mais le problème reste:

  public void copy(String oldPath, String newPath)
  {
    FileStream input = null;
    FileStream output = null;
    try
    {
      input = new FileStream(oldPath, FileMode.Open);
      output = new FileStream(newPath, FileMode.Create, FileAccess.ReadWrite);

      byte[] buffer = new byte[32768];
      int read;
      while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
      {
        output.Write(buffer, 0, read);
      }
    }
    catch (Exception e)
    {
    }
    finally
    {
      input.Close();
      input.Dispose();
      output.Close();
      output.Dispose();
    }
  }
Quel est donc à l'aide du fichier? Il est clair que vous ne serait pas juste inutilement créer un fichier qui rien d'autre que de les supprimer quelques secondes plus tard, donc, quelque chose doit être l'utiliser. Quelle est cette chose?
Le fichier provient d'un autre système, il est changé en elle, je doit remplacer l'ancien. Je suis en train d'élaborer un "miroir" du système.
Peut-être cette même question qui pourrait vous aider: stackoverflow.com/questions/7937966
File.Copy() toujours remplir et fermer le descripteur de fichier avant de retourner.
Peut-être il y a encore une poignée sur le fichier quelque part? Avez-vous un fichier d'une façon quelconque? Peut-être que l'objet se bloque encore en mémoire? Le blocus durer éternellement, sans redémarrer IIS?

OriginalL'auteur jbernal | 2013-08-06