为什么我会收到500内部错误,没有捕获异常?

时间:2016-02-25 22:43:25

标签: c# asp.net .net ajax pdfsharp

控制器:

    [HttpPost]
    public ActionResult HtmlToPdf ( String html )
    {
        try
        {
            var filename = DateTime.Now.Ticks.ToString() + ".pdf";
            using (MemoryStream ms = new MemoryStream())
            {
                var pdf = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf(html, PdfSharp.PageSize.A4);
                pdf.Save(Server.MapPath("~/Dumps/") + filename);
            }
            return Json(new { filename = filename });
        }
        catch ( Exception e )
        {
            return Json(new { msg = e.Message });
        }

    }

AJAX:

$('#download-as-pdf').click(function () {
    //var resultsHtml = $(this).closest('html').html();
    var resultsHtml = "<html><head></head><body><p>Hey there</p></body></html>";
    $.ajax({
        url: '/Answers/HtmlToPdf',
        method: 'POST',
        data: { html: resultsHtml },
        success: function (retobj) {
            console.log(retobj);
        },
        error: function (retobj) {
            console.log("The error callback was called");//TEST
        }
    });

})

我知道控制器正在被调用,因为如果我设置了resultsHtml = undefined,那么我会从控制器中找回错误

{msg: "Cannot save a PDF document with no pages."}

那么这里发生了什么?有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您是否检查过您指定的文件夹是否具有IUSR / IIS的R / W权限? 我会设置一个断点并准确调试这一行:

pdf.Save(Server.MapPath("~/Dumps/") + filename);

答案 1 :(得分:0)

看来你正在保存一个空的pdf,我认为这是你的问题,你的html参数必须有一些内容来生成以下代码中的pdf:enter image description here