从托管为Windows服务(32位)的服务进行打印会引发异常。
异常: PrintTicket提供程序无法绑定到打印机。 Win32错误:-2147467231
当托管为控制台应用程序(32位)时,该方法可以正常工作,但是当作为Windows服务托管时,它会抛出异常。
private void Print(PrintJob printJob, string templateXaml)
{
Thread t = new Thread(() =>
{
try
{
dynamic labelDataObject = CreateDynamicObject(printJob.LabelData);
PrintQueue queue = GetPrintQueue(printJob.PrintQueue);
PrintTicket ticket = queue.DefaultPrintTicket;
ticket.PageOrientation = PageOrientation.Portrait;
FixedPage page = RenderPage(new Size(ticket.PageMediaSize.Width.Value, ticket.PageMediaSize.Height.Value), labelDataObject, templateXaml);
XpsDocumentWriter xpsWriter = PrintQueue.CreateXpsDocumentWriter(queue);
xpsWriter.Write(page, ticket);
}
catch
{
throw;
//TODO: Logging and notification
}
});
t.IsBackground = false;
t.SetApartmentState(ApartmentState.STA);
t.Priority = ThreadPriority.AboveNormal;
t.Start();
t.Join();
}
我尝试在adminstrator,当前登录用户和本地系统帐户下运行该服务。到目前为止没有任何作用。请帮忙:/
答案 0 :(得分:1)
我们遇到了同样的问题:使用.net框架从32位Windows服务向打印机发送XPS文件失败,并显示错误消息。
根据MS的支持,有两种解决方案:
希望这能解决你的问题!