はIIS

2016-09-02 1 views
0

にasp.net MVCでファイルを解放することはできませんここで私が作った機能があります:はIIS

if (Valide()) 
{ 
    try 
    { 
     File.Delete(Server.MapPath("F16client.pdf")); 
    } 
    catch 
    { 
    } 

    using (FileStream ms = new FileStream(Server.MapPath("F16client.pdf"), FileMode.Create, FileAccess.Write, FileShare.None)) 
    { 
     PdfReader lecteur = new PdfReader(Server.MapPath("~/Formulaires/f16.pdf")); 

     PdfStamper etampeur = new PdfStamper(lecteur, ms); 

     // DO STUFF, Whatever 

     etampeur.FormFlattening = true; 
     etampeur.Close(); 
     lecteur.Close(); 

     System.Net.Mail.Attachment at = new Attachment(Server.MapPath("F16client.pdf"));            
    } 
} 

ローカルテストするとき、それは動作しますが、IIS上で、このW3Wプロセスは私のf16clientを手放すことはありません。 pdfと私はいつも一緒になります:

このプロセスは、別のプロセスで使用されているため、ファイル 'D:\ inetpub \ wwwroot \ Formulaire16 \ F16client.pdf'にアクセスできません。

なぜIIS上でこのファイルを使用しているのですか?ローカル??????

+0

ファイルを他の場所で開いていますか? – Jecoms

+1

この行をusingステートメントから移動するとどうなりますか? System.Net.Mail.Attachment at =新しい添付ファイル(Server.MapPath( "F16client.pdf")); – Sparrow

+0

代わりにTempファイルを作成することをお勧めします - あなたが持っているコードにはいくつか問題があります。 –

答えて

0

ここでは魔法はありません。機能の終了前に

at.Dispose(); 

と良いオールズ:問題を指摘してFeryal Badiliのおかげで、電子メールの添付ファイルは...だから

、シンプル実際ressourceを保持しているものです。うん...

私がテストしたたびにstop everythingボタンを押していたので、おそらくそれは私の機能を試したときにハンドルを殺していたためです。

0

IIS上のアプリケーションプールユーザーのアクセス権を確認します。次に、このコードで再度試してください:

var file = Server.MapPath("F16client.pdf") 
File.SetAttributes(file, FileAttributes.Normal); 
File.Delete(file); 

これはアクセス権またはファイル属性の問題です。

+0

アドバイスのために、私は通常、自分のWebアプリケーションが所有しているファイルを100%コントロールしていることを確認しましたが(今の場合ですが)、権利と属性を確認する良い方法です。 –