【问题标题】:Print.exe randomly gives Unable to initialize device error messagePrint.exe 随机给出无法初始化设备错误信息
【发布时间】:2017-08-01 11:44:22
【问题描述】:

我们创建了一个 IIS Web 服务,它启动一个 print.exe 进程,通过网络将打印作业提交到不同位置的共享打印机。通常,此过程工作正常,并且 prn 已成功发送到远程打印机。

但是,有时 print.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;
}

【问题讨论】:

    标签: .net web-services iis networking printing


    【解决方案1】:

    我发现在同一时刻多次调用 Web 服务时会出现此问题。当同时使用两个请求调用 Web 服务时,其中一个请求成功,另一个请求失败。

    为了克服这个问题,我更改了 print.exe 进程的启动部分,而不是这个,我只是将文件 COPY /B 到打印机假脱机。这可以由不同的进程同时使用,没有任何问题。

    【讨论】:

      猜你喜欢
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多