不能在IIS上发布asp.net MVC中的文件
本文关键字:MVC net 文件 asp IIS 不能 | 更新日期: 2023-09-27 18:05:19
这是我做的函数:
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上仍然在使用,而不是在测试本地??????时
检查IIS上应用程序池用户的访问权限。然后用下面的代码再试一次:
var file = Server.MapPath("F16client.pdf")
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
这可能是权限或文件属性问题。
嗯…这里没有魔法。感谢Feryal Badili指出这个问题,电子邮件附件实际上是占用资源的东西…
那么,一个简单的:
at.Dispose();
在函数结束前,一切都好。是的…
它在本地工作的原因可能是因为我每次测试时都按stop everything
按钮,因此,每次它尝试我的函数时,我都会杀死句柄。