ASP.NET IIS服务器端打印失败

ASP.NET IIS服务器端打印失败,asp.net,iis,printing,server-side,printdocument,Asp.net,Iis,Printing,Server Side,Printdocument,我正在构建需要使用PrintDocument方法打印的ASP.NET应用程序: PrintDocument.Print() 在使用IIS express的开发环境中,打印工作正常。将其发布到intranet IIS服务器时,打印失败,我认为这是由于aspnet工作进程的权限问题造成的 我试着做了以下事情,但没有成功: 我在集成管道模式下为管理员本地用户创建了一个应用程序池,加载用户配置文件选项设置为true 我将应用程序移动到新创建的应用程序池中 我在web.config文件中添加了 出现一

我正在构建需要使用PrintDocument方法打印的ASP.NET应用程序:

PrintDocument.Print()
在使用IIS express的开发环境中,打印工作正常。将其发布到intranet IIS服务器时,打印失败,我认为这是由于aspnet工作进程的权限问题造成的

我试着做了以下事情,但没有成功:


  • 我在集成管道模式下为管理员本地用户创建了一个应用程序池,加载用户配置文件选项设置为true
  • 我将应用程序移动到新创建的应用程序池中
  • 我在web.config文件中添加了
  • 出现一个错误,说明:检测到ASP.NET设置不适用于集成管理管道模式,因此我将
    添加到
    部分

有什么帮助吗?

我想你可能误解了这里的一些基本概念。使用
PrintDocument.Print()
时,您正在服务器上打印。在IIS中部署应用程序时,此打印将在承载应用程序的服务器计算机上进行。您认为代码在IIS Express中工作的原因是,您的应用程序与测试它的客户端浏览器位于同一台计算机上。此外,您正在配置打印机的帐户下运行应用程序

不能从web应用程序直接打印到客户端计算机。这将是一个重大的安全问题。最好是使用打印提供一些HTML文档。然后,如果用户决定,他可能会在浏览器中打印它


另一方面,如果您想在连接到web服务器的某台打印机上打印,则需要将IIS中的应用程序池配置为在配置文件中配置了打印机的标识下运行。

我认为原始海报对他们的问题大加指责。例如,如果要使用GhostScript生成.PDFs,请安装打印机驱动程序并为其创建打印机。通过提前提供一个Saveas()对话框,可以在多种语言中抑制该对话框。这在早期版本的IIS中是可行的(可能不太安全),但在IIS8中更难做到

我认为这个问题是由IIS禁止访问本地打印机队列引起的。这可能是由于运行时不在NT AUTHORITY\INTERACTIVE组中,或者因为IIS将用户(运行应用程序池的人)分为两个组:IIS APPPOOL\和BUILTIN\IIS\U IUSR


您可以通过使用诸如Sys Internal的Process Explorer之类的工具查看线程权限来验证所有这一切。

希望我正确理解了您的问题,但我自己对此有些困惑。我们在我的工作中安装的是带有IIS 7的Windows Server 2008 R2

我们在同一个盒子上也安装了一个打印服务器(不确定这是否重要,因为这不是我的专业领域)

基本上,使用,
PrinterSettings.InstalledPrinters查看已安装的打印机时,我可以看到服务器上安装的所有打印机名称

我将一个调试器附加到要调试的应用程序进程,我可以使用调试器查看这一点,否则您将不得不运行一个循环来打印这些进程。如果在本地运行此操作,您将只看到计算机上安装的打印机。如果是网络打印机,则会显示完整路径。因此,确定服务器将识别打印机的路径/名称,然后使用


PrintDocument类的属性。这对我有用。此外,我的应用程序池标识设置为
NetworkService

我也遇到过同样的问题,我找到了以下解决方案,它对我很有效

1 - Go to printer and setting of system  
2 - Select Printer  
3 - Go to Printer Properties  
4 - Security  
5 - Click on Add "IIS AppPool\DefaultAppPool" as object name and click on check name (Default Pool will be your Pool Name)  
6 - Give permission Manage This Printer and Manage Document permission.  
7 - Restart IIS

当然,我正在尝试打印到服务器中配置的打印机,而不是本地客户端打印机。我试着按照你说的配置应用程序池,但失败了。那么,我该怎么做呢?是的,在这种情况下,您应该将IIS中的应用程序池配置为在配置了打印机的帐户下运行。并且您已经在此应用程序池的属性中启用了加载用户配置文件。我为本地管理员帐户创建了一个应用程序池,加载用户配置文件已启用(=true),但无法工作。本地管理员帐户是否配置了打印机?当然,不会显示任何内容:-)它无法显示。你希望它出现在哪里?没有与IIS关联的UI。这应该适用于普通打印机。请不要以本地管理员的身份运行web应用程序,一旦该框被打印出来,这对您和其他人的安全都非常有害。您可以直接从RDLC转到PDF:。