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.

iTextSharp用来打印 PDF,但它在下一行代码崩溃:

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 文件夹用于存储应用程序数据。

App_Data您可以在as中创建一个文件夹,ReportPdf而不是将您生成的 PDF 文件包含在项目中以避免阻塞。

于 2013-08-24T13:30:16.057 回答