Я настроил свой сервер iis на Windows 10 и развернул на нем веб-приложение mvc-5, все работает нормально, кроме Crystal Reports PrintToPrinter, когда я пытаюсь вызвать этот метод, ничего не печатается, а веб-приложение ничего не делает и просто висит там. но когда я разработал это приложение с vs17 на том же компьютере, метод printToPrinter работает нормально. Он застревает только после публикации на iis.
Я пытался
popt.PrinterName = printerSettings.PrinterName;
rd.ReportClientDocument.PrintOutputController.PrintReport (Popt);
этот метод тоже.
вот мой фактический код:
DataTable dt = new DataTable();
string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(sqlQuery))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
sda.Fill(dt);
}
}
}
ReportDocument rd = new ReportDocument();
rd.Load(Path.Combine(Server.MapPath("~/Reporting/Crystals/rptKitchenCopy.rpt")));
rd.SetDataSource(dt);
Response.Buffer = false;
Response.ClearContent();
Response.ClearHeaders();
Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
stream.Seek(0, SeekOrigin.Begin);
PrinterSettings settings = new PrinterSettings();
System.Drawing.Printing.PrintDocument pDoc = new System.Drawing.Printing.PrintDocument();
CrystalDecisions.Shared.PrintLayoutSettings PrintLayout = new CrystalDecisions.Shared.PrintLayoutSettings();
System.Drawing.Printing.PrinterSettings printerSettings = new System.Drawing.Printing.PrinterSettings();
var dpn = settings.PrinterName;
printerSettings.PrinterName = dpn;
System.Drawing.Printing.PageSettings pSettings = new System.Drawing.Printing.PageSettings(printerSettings);
CrystalDecisions.ReportAppServer.Controllers.PrintReportOptions popt = new CrystalDecisions.ReportAppServer.Controllers.PrintReportOptions();
popt.PrinterName = printerSettings.PrinterName;
rd.ReportClientDocument.PrintOutputController.PrintReport(popt);
// rd.PrintOptions.PrinterName = "\\ ";
// rd.PrintToPrinter(printerSettings, pSettings, false, PrintLayout);
// rd.PrintToPrinter(1, true, 1, 1);
return File(stream, "application/pdf", "KitchenCopy.pdf");
Я ожидаю, что он также будет печатать на сервере iis с принтером по умолчанию, который я разместил на той же машине.