0

私は ASP.NET MVC3 プロジェクトに取り組んでおり、私のプロジェクトの一部は PDF ファイルを印刷することです。System.Net.Mail添付ファイルを送信するために追加した今朝まで、すべてが正常に機能していました。そして、この後もうまくいきましたが、情報を編集しようとすると、次のエラーが発生しました。

The process cannot access the file 'Content\StudentPdf\student54.pdf' because it is being used by another process.

以前はiTextSharpPDF を印刷していましたが、次のコード行でクラッシュします。

using (FileStream fs = new FileStream(Server.MapPath("~/Content/StudentPdf/student" + id + ".pdf"), FileMode.Create))

自分のファイルが自分のソリューションで使用されている場所を確認するにはどうすればよいですか? 私PrintPdfのメソッドはメソッドの前に呼び出されSendEmailます。

4

2 に答える 2

2

読み取り用にファイルを開くときは、その FileAccess および FileShare モードを設定します。

using(var readerFileStream = new FileStream(filePath, FileMode.Open, 
                                          FileAccess.Read, FileShare.ReadWrite))
{
 // ...
}

この場合、このファイルは他のプロセスによる読み取りまたは書き込みのためにロックされません。usingまた、リソースの解放を保証する部分も忘れないでください。

于 2013-08-24T17:54:20.010 に答える
0

TFS または他のバージョン管理ツールを使用していますか? プロジェクトにファイルを含めて、チェックイン時にロックした可能性があります。これをチェックしてください。

以下は、Directios のリストと MVC での使用方法です。

App_Data フォルダーは、アプリケーション データを格納するためのものです。

ブロックを回避するために、生成した PDF ファイルをプロジェクトに含めずにApp_Dataasにフォルダーを作成できます。ReportPdf

于 2013-08-24T13:30:16.057 に答える