我正在尝试使用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
答案 0 :(得分:0)
要使用从远程计算机共享的打印机,您的应用程序必须使用有权连接到远程计算机的帐户运行。远程计算机根本不在乎您在托管Web服务器的本地工作站上拥有多少权限;它完全可以访问。它是一个完全不同的安全域*,因此本地工作站上的管理员权限根本无济于事。
要使其正常工作,您需要设置一个常规用户帐户,该帐户可以 连接到远程共享。通常,这意味着还需要更改打印机共享以显式支持新帐户。确保此帐户还具有本地打印机的权限以及您的Web应用需要执行的其他任何操作。不要依赖用户登录时发生的任何事情,例如映射的驱动器,因为此帐户通常不会登录。然后将新帐户用于应用程序池。
*除非两台计算机都加入同一个Active Directory域,否则在这里使事情变得容易。