Процесс не может получить доступ к файлу с помощью PdfWriter.GetInstance

Я сохраняю содержимое HTML в PDF со следующим кодом:

public void SaveHTMLToPdf(string HTML, string FilePath)
{
    Document document = new Document(PageSize.A4, 10f, 10f, 100f, 0f);

    PdfWriter.GetInstance(document, new FileStream(Request.PhysicalApplicationPath + "\\Invoice_Statement.pdf", FileMode.Create));
    document.Open();
    iTextSharp.text.Image pdfImage = iTextSharp.text.Image.GetInstance(Server.MapPath(ImgCom.ImageUrl.ToString()));

    pdfImage.ScaleToFit(150, 100);

    pdfImage.Alignment = iTextSharp.text.Image.UNDERLYING; pdfImage.SetAbsolutePosition(40, 770);

    document.AddTitle("Invoice Details");
    document.Add(pdfImage);

    iTextSharp.text.html.simpleparser.StyleSheet styles = new iTextSharp.text.html.simpleparser.StyleSheet();
    iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(document);

    styles.LoadTagStyle("th", "color", "red");
    styles.LoadTagStyle("th", "frontsize", "5");

    document.Add(new Header(iTextSharp.text.html.Markup.HTML_ATTR_STYLESHEET, "Style.css"));

    hw.Parse(new StringReader(HTML));

    document.Close();
}

Но это дает эту ошибку:

Процесс не может получить доступ к файлу 'C:\inetpub\wwwroot\abc\Invoice_Statement.pdf', поскольку он используется другим процессом.

На этой линии:

PdfWriter.GetInstance(document, new FileStream(Request.PhysicalApplicationPath + 
                      "\\Invoice_Statement.pdf", FileMode.Create));

Это происходит только на сервере с IIS-7 и прекрасно работает на локальных с Visual Studio.

Может кто-нибудь помочь..??

1 ответ

Вероятно, это потому, что у вас нет прав для записи файла в это место. Помните, что когда вы работаете локально с помощью Visual Studio, IIS работает в вашем текущем зарегистрированном контексте безопасности, и у вас, вероятно, есть необходимые разрешения для чтения / записи в расположение файла. После развертывания на сервере сервер обычно запускает IIS в контексте безопасности учетной записи сетевой службы или учетной записи локальной системы. Вы хотите убедиться, что ваш каталог предоставил разрешения на чтение / запись для этих двух учетных записей.

Другие вопросы по тегам