从IIS打印无法在作为本地asp.net连接的共享打印机上使用

时间:2018-12-28 04:58:58

标签: c# asp.net iis windows-server-2008

我正在尝试使用asp.net和以下代码进行打印

string s = "string to print";
PrintDocument p = new PrintDocument();
p.PrintPage += delegate(object sender1, PrintPageEventArgs e1)
{
  e1.Graphics.DrawString(s, new Font("Times New Roman", 12), new 
  SolidBrush(Color.Black), new RectangleF(0, 0, 
  p.DefaultPageSettings.PrintableArea.Width, 
  p.DefaultPageSettings.PrintableArea.Height));
};
try
{
   p.Print();
}
catch (Exception ex)
{
   throw new Exception("Exception Occured While Printing", ex);
}

此代码已成功运行,但未打印任何内容,打印机中的状态始终为“错误打印”。但是它可以在我的IP打印机上工作。

我为应用程序池分配了管理员帐户。

我的环境是Server2008,IIS 7,.Net 4.0

1 个答案:

答案 0 :(得分:0)

要使用从远程计算机共享的打印机,您的应用程序必须使用有权连接到远程计算机的帐户运行。远程计算机根本不在乎您在托管Web服务器的本地工作站上拥有多少权限;它完全可以访问。它是一个完全不同的安全域*,因此本地工作站上的管理员权限根本无济于事。

要使其正常工作,您需要设置一个常规用户帐户,该帐户可以 连接到远程共享。通常,这意味着还需要更改打印机共享以显式支持新帐户。确保此帐户还具有本地打印机的权限以及您的Web应用需要执行的其他任何操作。不要依赖用户登录时发生的任何事情,例如映射的驱动器,因为此帐户通常不会登录。然后将新帐户用于应用程序池。


*除非两台计算机都加入同一个Active Directory域,否则在这里使事情变得容易。