Windows服务:PrintTicket提供程序无法绑定到打印机。 Win32错误:-2147467231

时间:2014-06-17 22:08:37

标签: c# winapi printing

从托管为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,当前登录用户和本地系统帐户下运行该服务。到目前为止没有任何作用。请帮忙:/

1 个答案:

答案 0 :(得分:1)

我们遇到了同样的问题:使用.net框架从32位Windows服务向打印机发送XPS文件失败,并显示错误消息。

根据MS的支持,有两种解决方案:

  1. 使用64位Windows服务
  2. 应用知识库文章2954953中描述的注册表修改
  3. 希望这能解决你的问题!