首页 > 解决方案 > 从 IIS 打印无法在作为本地 asp.net 连接的共享打印机上工作

问题描述

我正在尝试使用带有以下代码的 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

标签: c#asp.netiiswindows-server-2008

解决方案


要使用从远程计算机共享的打印机,您的应用程序必须使用有权连接到远程计算机的帐户运行。远程计算机根本不关心您在托管 Web 服务器的本地工作站上拥有多少权限。这是一个完全不同的安全域*,因此本地站的管理员权限根本没有帮助。

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


* 除非两台机器都加入同一个 Active Directory 域,这样可以让事情变得更容易。


推荐阅读