0

次のコードを使用して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を使用するサーバーでのみ発生し、VisualStudioを使用するローカルで正常に機能します。

誰か助けてもらえますか..??

4

1 に答える 1

0

おそらく、その場所にファイルを書き込む権限がないためです。Visual Studio を使用してローカルで実行する場合、IIS は現在ログインしているセキュリティ コンテキスト内で実行され、ファイルの場所に対する読み取り/書き込みに必要なアクセス許可を持っている可能性が高いことに注意してください。サーバーに展開すると、サーバーは通常、ネットワーク サービス アカウントまたはローカル システム アカウントのセキュリティ コンテキストで IIS を実行します。ディレクトリがこれら 2 つのアカウントに読み取り/書き込み権限を付与していることを確認したいと考えています。

于 2013-05-08T11:26:58.417 に答える