不能在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上发布asp.net MVC中的文件

检查IIS上应用程序池用户的访问权限。然后用下面的代码再试一次:

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

这可能是权限或文件属性问题。

嗯…这里没有魔法。感谢Feryal Badili指出这个问题,电子邮件附件实际上是占用资源的东西…

那么,一个简单的:

    at.Dispose();

在函数结束前,一切都好。是的…

它在本地工作的原因可能是因为我每次测试时都按stop everything按钮,因此,每次它尝试我的函数时,我都会杀死句柄。