无法传输PDF文件(.net core 2.0)

时间:2017-09-19 23:08:58

标签: asp.net-core

有几天我不知道如何解决我的问题。

我需要返回基于ID动态生成的用户PDF文档。我用这个NReco.PdfGenerator.LT。当我直接从VS2017运行项目时,一切正常,文件下载。但是,如果我在IIS服务器上发布项目然后尝试单击该按钮,将打开一个不存在的页面(HTTP ERROR 404)。

按钮:

<a asp-controller="Dokumenty" asp-action="PobierzPotwierdzenieDokPdf" asp-route-DokID="@item.Dok_DokID" class="btn btn-warning btn-sm"><i class="glyphicon glyphicon-print" title="Drukuj PDF"></i></a> 

控制器:

public async Task<FileResult> PobierzPotwierdzenieDokPdf(int DokID)
    {

        var dokument = _context.Dokumenty.FirstOrDefault(i => i.Dok_DokID == DokID);
        var notatki = _context.DokumentyNotatki.Where(d => d.DokNot_DokID == DokID);

        viewDokumentPotwierdzeniePdf viewDokumentPotwierdzeniePdf = new viewDokumentPotwierdzeniePdf()
        {
            Dokument = dokument,
            DokumentNotatka = notatki
        };

        var htmlContent = await _viewRenderService.RenderToStringAsync("Dokumenty/DokumentPotwierdzeniePdf", viewDokumentPotwierdzeniePdf);

        var htmlToPdf = new HtmlToPdfConverter
        {
            PageHeight = 210,
            PageWidth = 148,
            Margins = new PageMargins() { Bottom = 5, Left = 5, Right = 5, Top = 5 },
            Orientation = PageOrientation.Landscape,
            PageFooterHtml = "<div style='font-family: Verdana, Geneva, Tahoma, sans-serif; font-size: 10px; text-align: center; color: grey;'>Strona <span class='page'></span> z <span class='topage'></span> | Operator drukujący: " + HttpContext.Session.GetString("Ope_Nazwisko") + " | Data wydruku: " + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss") + " | <b>System ERP Polimer</b></div>"
        };
        htmlToPdf.License.SetLicenseKey("PDF_Generator_Bin_Examples_Pack_0000000000", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
        htmlToPdf.PdfToolPath = @"C:\Program Files\wkhtmltopdf\bin\";

        byte[] pdfBytes = htmlToPdf.GeneratePdf(htmlContent);

        FileResult fileResult = new FileContentResult(pdfBytes, "application/pdf")
        {
            FileDownloadName = dokument.Dok_NrKancelaryjny.Replace("/", "_") + ".pdf"
        };

        dokument.Dok_Wydruk = 1;
        _context.Entry(dokument).State = EntityState.Modified;
        await _context.SaveChangesAsync();

        return fileResult;
    }

IIS正在尝试打开网址http://domainname.int/Dokumenty/PobierzPotwierdzenieDokPdf?DokID=77,其中末尾的数字是ID。但该页面实际上并不存在。

请帮忙。我究竟做错了什么? 附:对不起我的英文:)

0 个答案:

没有答案