这是我的代码打印一个已经生成的PDF在网站上。该页面允许用户通过从列表中选择打印机来打印该PDF文件。
当我从本地机器运行它并且从选定的打印机打印出PDF时,我的代码运行良好,但是当我将它部署到生产web服务器(IIS 7)时,单击“打印”按钮不会发生任何事情,并且不会引发任何异常或错误。
我已经检查了该文件是否存在于服务器以及可执行的C:\\Program Files\\Adobe\\Reader 10.0\\Reader\\AcroRd32.exe中,因此我认为这个问题可能与权限有关。
在服务器中执行的检查:
All Users、System和IIS_IUSRS用户对~/Content/Pdfs/文件夹具有R/W/E权限All Users、System和IIS_IUSRS用户对C:\Program Files\Adobe\Reader 10.0\Reader文件夹具有R/W/E权限。ApplicationPoolIdentity更改为LocalSystem。
私有空白打印(字符串文件,字符串printerName) { string FilePath =Server.MapPath(“~/ FilePath /Pdfs/”+文件);尝试{ Process p=新进程();p.StartInfo.FileName = @"C:/Program /Adobe/Reader 10.0/Reader/AcroRd32.exe";p.StartInfo.Arguments = "/h /t \“+FilePath+ "\”+ printerName +“\”;p.StartInfo.RedirectStandardError = true;p.StartInfo.UseShellExecute = false;p.Start();string stdout = p.StandardError.ReadToEnd();p.WaitForExit();const = @"C:\Output.txt";System.IO.StreamWriter sw =新System.IO.StreamWriter(Sw);sw.WriteLine(stdout);sw.Close();} catch (异常e) { const = @"C:\Error.txt";System.IO.StreamWriter sw =新System.IO.StreamWriter( fic );sw.WriteLine(e.Message);sw.Close();}}有什么问题吗?
更新:
我按照建议做了更多的日志记录,所以我使用Try...Catch记录输出和异常(更新的代码)。在服务器上执行后,Output.txt文件被创建为空,而Error.txt文件未被创建。事件查看器上没有记录应用程序错误/警告。
我在服务器上打开一个命令提示符窗口并执行AcroRd32.exe /h /t "C:\inetpub\wwwroot\otweb\Content\Pdfs\orden20140627112547.pdf" "Bullzip Printer",文件被成功打印出来。
发布于 2014-06-30 10:10:03
我终于找到了解决办法。唯一帮助我的是将应用程序池标识设置为IIS上的管理员帐户
https://stackoverflow.com/questions/24428612
复制相似问题