我们创建了一个IIS Web服务,启动print.exe进程,通过网络将打印作业提交到不同位置的共享打印机。通常,此过程正常, prn 正在成功发送到远程打印机。
但是,有时print.exe返回" 无法初始化设备\\ server_name \ shared_printer_name "我完全无法追踪发生了什么,我可以' t手动创建此案例。
你能帮我理解问题所在吗?我可以检查什么来理解和解决这个问题?
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;
}
答案 0 :(得分:0)
我发现在同一时间多次调用Web服务时会出现此问题。当同时使用两个请求调用Web服务时,其中一个请求成功,另一个请求失败。
为了解决这个问题,我更改了print.exe进程的起始部分,而不是这个,我只是 COPY / B 将文件发送到打印机假脱机。这可以由不同的进程同时使用而没有任何问题。