2010-05-12 5 views
0

J'ai un site Web asp.net et j'ai déjà fait .Dispose() voici mon code ci-dessous;Le processus ne peut pas accéder au fichier parce qu'il est utilisé par un autre processus

essayer {

 MailMessage newMail = new MailMessage(MailFrom, MailTo, 

mailSubject, MailMsg);

 if (MailAttachment != "") 
     { 
      Attachment data = new Attachment(MailAttachment, 

MediaTypeNames.Application.Octet); newMail.Attachments.Add (données); } newMail.BodyEncoding = System.Text.Encoding.UTF8; newMail.IsBodyHtml = true;

 SmtpClient client = new SmtpClient("192.168.2.205"); 
     client.Credentials = CredentialCache.DefaultNetworkCredentials; 
     client.Send(newMail); 

     newMail.Attachments.Dispose(); 
     newMail.Dispose(); 

     DeleteAttachment(MailAttachment); 

     lblSuccess.Text = "Başvurunuz alınmıştır teşekkürler."; 
     lblSuccess.Visible = true; 
     ClearForm(); 
    } 
    catch (Exception ex) 
    { 
     lblSuccess.Text = ex.Message; 
     //lblSuccess.Text = "Bir sorun oluştu bir daha deneyiniz."; 
     lblSuccess.Visible = true; 
    } 

Mais je suis obtenir la même erreur, il est bien en cours d'exécution dans mon localhost, mais dans le serveur I'M obtenir cette erreur. Comment puis-je le réparer?

+0

Peut-être est-il utilisé par un autre processus? Essayez de fournir un peu plus d'informations. –

+0

peut-être Un extrait de code plus grand aidera – Midhat

+0

J'ai édité et donner un extrait de code plus grand espérons qu'il sera utile – Xenon

Répondre

3

Appeler l'élimination sur l'objet Attachment.

L'appel Dispose sur le SmtpClient ne l'appelle pas sur les pièces jointes.

+0

cela n'a pas fonctionné. Tous les mêmes travaux en local mais pas dans le serveur? – Xenon

+0

Avez-vous appelé data.Dispose()? Ou juste sur la collection de pièces jointes? Essayez-le sur l'accessoire individuel. Si cela ne fonctionne pas, l'autre chose que vous pouvez faire est de lire le fichier dans un tableau d'octets et de créer la pièce jointe à partir du tableau d'octets. –

+0

btw, voici un codesnippet pour aider: byte [] data = Fichier.ReadAllBytes ("c: \\ temp \\ sample.jpg"); MemoryStream ms = nouveau MemoryStream (données); Annexe a = nouvelle pièce jointe (ms, "sample.jpg"); m.Attachments.Add (a); File.Delete ("c: \\ temp \\ sample.jpg") ; –