我们创建了一个 IIS Web 服务,该服务启动一个打印.exe过程,通过网络将打印作业提交到不同位置的共享打印机。通常,此过程工作正常,并且 prn已成功发送到远程打印机。
但是,有时打印.exe返回">无法初始化设备\\server_name\shared_printer_name",我完全无法跟踪正在发生的事情,也无法手动创建此案例。
你能帮我了解问题可能是什么吗?我可以检查哪些内容来了解和解决此问题?
Web 服务使用以下代码启动该过程:
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "print.exe";
startInfo.Arguments = "/D:"" + printerName + "" " + prnFilePath;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = true;
Process printProcess = Process.Start(startInfo);
bool printSuccessful = false;
while (!printProcess.StandardOutput.EndOfStream)
{
string line = printProcess.StandardOutput.ReadLine();
log.Debug("Response of print process: " + line);
if (line.Contains("currently being printed"))
{
printSuccessful = true;
}
}
return printSuccessful;
}
catch (Exception ex)
{
log.Error("printWithWindowsCommand failed. Could not print", ex);
return false;
}
我发现当同时多次调用 Web 服务时,会出现此问题。当同时使用两个请求调用 Web 服务时,其中一个请求成功,另一个请求失败。
为了克服这个问题,我更改了 print.exe 过程开始部分,取而代之的是,我只是将文件复制到打印机后台打印。这可以由不同的进程同时使用,没有任何问题。