printqueue异常:PrintTicket提供程序绑定打印机失败.Win32错误:访问被拒绝

本文关键字:Win32 失败 错误 拒绝 打印机 访问 绑定 PrintTicket 异常 程序 printqueue | 更新日期: 2023-09-27 18:05:10

我有一个应用程序,我想打印一个Word文档。我使用的是第三方GemBox软件,在我的开发环境中,这段代码可以工作;

public void OutputLetter(string outputFile, string placeholder, string newText)
{
    using (var document = DocX.Load(this.InputFile))
    {
        document.ReplaceText(placeholder, newText);
        document.SaveAs(outputFile);
    }
    this.PrintDocument(outputFile);
}
private void PrintDocument(string outputFile)
{
    var document = DocumentModel.Load(outputFile, LoadOptions.DocxDefault);
    document.Print(AppSettings.PrinterName);
}

AppSettings。PrinterName是存储在web.config中的打印机名称。一旦我部署它,我就会得到这个错误;"document.Print (AppSettings.PrinterName);"

System.Printing.PrintQueueException: PrintTicket provider failed to bind to printer. Win32 error: Access is denied. 

在事件查看器上,我得到;

The machine-default permission settings do not grant Local Activation permission for the COM Server application with CLSID 
{BA7C0D29-81CA-4901-B450-634E20BB8C34}
 and APPID 
{AA0B85DA-FDDF-4272-8D1D-FF9B966D75B0}
 to the user IIS APPPOOL'Mulalley SID (S-1-5-82-1744840036-3971326342-2272496405-1389653927-2904033151) from address LocalHost (Using LRPC). This security permission can be modified using the Component Services administrative tool.

如何解决这个问题?

printqueue异常:PrintTicket提供程序绑定打印机失败.Win32错误:访问被拒绝

这看起来可能是这个问题Microsoft bk2872151

他们为用户提供了一个修复方案,开发者建议的解决方案是确保你不是在64位服务器上运行在32位模式(即切换到AnyCPU)。

请注意,在VS2013中,即使您选择AnyCPU

,也有一个额外的复选框选择首选32位。