我有一个应用程序,我想打印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.
我该如何解决这个问题?
答案 0 :(得分:0)
这看起来可能就是这个问题Microsoft bk2872151
它们为用户提供了一个修复程序,为开发人员提供的建议解决方案是确保您没有在64位服务器上以32位模式运行(即切换到AnyCPU)。
请注意,在VS2013中,即使您选择AnyCPU,还有一个额外的复选框,更喜欢32Bit