private void startHttpThread() { using (HttpListener listerner = new HttpListener()) { listerner.AuthenticationSchemes = AuthenticationSchemes.Anonymous;//指定身份验证 Anonymous匿名访问 listerner.Prefixes.Add("http://127.0.0.1:" + port + "/report/"); listerner.Start(); log.Info("WebServer Start Successed......."); PrinterControl printerControl = new PrinterControl(); var reportTemplate = string.Empty; while (true) { //等待请求连接 //没有请求则GetContext处于阻塞状态 HttpListenerContext ctx = listerner.GetContext(); string callback = string.Empty; try { log.Info("开始处理请求…… "); Uri url = ctx.Request.Url; ctx.Response.StatusCode = 200;//设置返回给客服端http状态代码 ctx.Response.ContentType = "application/json"; Dictionary <string, string> parm = getData(ctx); if (parm.Count > 0) { var printUrl = parm["url"].ToString().Trim(); callback = parm["callback"].ToString().Trim(); log.Info(printUrl + ": " + printUrl); var postData = parm["postData"].ToString().Trim(); log.Info(postData + ": " + postData); var cookieStr = parm["cookieStr"].ToString().Trim(); log.Info(cookieStr + ": " + cookieStr); var printerParams = parm["printerParams"].ToString().Trim(); log.Info(printerParams + ": " + printerParams); var charset = parm["charset"].ToString().Trim(); log.Info(charset + ": " + charset); reportTemplate = parm["_report"].ToString().Trim(); log.Info(reportTemplate + ": " + reportTemplate); SetPrint(sysIniPath, reportTemplate); PrinterSettings settings = new PrinterSettings(); //settings.DefaultPageSettings.PaperSize.Kind= System.Drawing.Printing.PaperKind.Custom; //1.设置打印机名称 settings.PrinterName = INIHepler.INIGetStringValue(sysIniPath, reportTemplate, reportTemplate, null); //2.设置打印机打印方向 settings.DefaultPageSettings.Landscape = Convert.ToBoolean(INIHepler.INIGetStringValue(sysIniPath, reportTemplate, "SetLandscape", null)); //3.设置纸张 //settings.DefaultPageSettings.PaperSize.PaperName = INIHepler.INIGetStringValue(sysIniPath, reportTemplate, "SetPaperName", null); //纸张高度 var SetPaperHeight = INIHepler.INIGetStringValue(sysIniPath, reportTemplate, "SetPaperHeight", 0 + ""); //纸张宽度 var SetPaperWidth = INIHepler.INIGetStringValue(sysIniPath, reportTemplate, "SetPaperWidth", 0 + ""); PaperSize paperSize = new PaperSize(reportTemplate, Convert.ToInt32(SetPaperWidth), Convert.ToInt32(SetPaperHeight)); settings.DefaultPageSettings.PaperSize = paperSize; //4下边距 var SetMarginsBottom = INIHepler.INIGetStringValue(sysIniPath, reportTemplate, "SetMarginsBottom", 0 + ""); //5上边距 var SetMarginsTop = INIHepler.INIGetStringValue(sysIniPath, reportTemplate, "SetMarginsTop", 0 + ""); //6左边距 var SetMarginsLeft = INIHepler.INIGetStringValue(sysIniPath, reportTemplate, "SetMarginsLeft", 0 + ""); //7右边距 var SetMarginsRight = INIHepler.INIGetStringValue(sysIniPath, reportTemplate, "SetMarginsRight", 0 + ""); //8------设置边距 Margins margins = new Margins(); margins.Bottom = Convert.ToInt32(SetMarginsBottom); margins.Top = Convert.ToInt32(SetMarginsTop); margins.Left = Convert.ToInt32(SetMarginsLeft); margins.Right = Convert.ToInt32(SetMarginsRight); settings.DefaultPageSettings.Margins = margins; var result = printerControl.SilentPrint(printUrl, postData, cookieStr, printerParams, charset, settings); log.Info("本地打印服务调用打印操作:" + result); using (StreamWriter writer = new StreamWriter(ctx.Response.OutputStream)) { // writer.WriteLine(result); writeJS(writer, result.ToString(), callback); } } } catch (Exception e) { if (ctx != null) { ctx.Response.StatusCode = 500;//设置返回给客服端http状态代码 using (StreamWriter writer = new StreamWriter(ctx.Response.OutputStream)) { writeJS(writer, "{status:'error',msg:'" + e.StackTrace + "'}", callback); log.Info("调用本地打印服务出现异常" + e.StackTrace + "*******" + e.Message + "*******" + e.InnerException.StackTrace); } } } } } }