【问题标题】:ASP.NET Process.Start not working on IIS8 (Windows 8.1)ASP.NET Process.Start 在 IIS8 (Windows 8.1) 上不起作用
【发布时间】:2015-08-03 03:48:33
【问题描述】:

过去几天我一直在努力解决这个问题,并尝试了所有建议的解决方案,包括这里的解决方案:

System.Diagnostics.Process.Start not work from an IIS

此代码(ASP.NET MVC Web 应用程序)在 IIS7(Windows 7)上完美运行。

代码只是在服务器的本地打印机(内联网)中使用 Adob​​e Reader 打印 PDF 文件:

// print receipt
ProcessStartInfo psInfo = new ProcessStartInfo();
psInfo.FileName = acrobatReaderPath;
psInfo.WorkingDirectory = System.IO.Path.GetDirectoryName(psInfo.FileName);
psInfo.Arguments = String.Format("/s /o /h /t \"{0}\" \"{1}\"", filePath, printerName);
psInfo.WindowStyle = ProcessWindowStyle.Hidden;
psInfo.CreateNoWindow = true;
psInfo.UseShellExecute = true;
Process process = Process.Start(psInfo);

应用程序池标识是本地特权帐户。就像我之前说的,它适用于 IIS7。

奇怪的是,我可以在任务管理器中看到后台进程已启动(AcroRd32.exe),包括用于启动它的命令行。如果我复制命令行并运行它,PDF 打印没有问题。

我有什么遗漏吗?

我知道有更好的方法可以做到这一点。也欢迎提出建议。

更新:

澄清:问题是过程未完成且 PDF 未打印。

显然问题更多的是一点点(32 对 64)。我还在调试中。

代码正在打印以下场景中的 PDF:

  • Windows 7(64 位)上的 Visual Studio 2012 IIS Express
  • Windows Server 2008 Standard(32 位)上的 IIS7

代码不打印以下情况下的 PDF:

  • Windows 7 上的 Visual Studio 2012 IIS7(64 位)
  • Windows 8.1(64 位)上的 IIS8

应用程序池正在使用管理员帐户运行,并且启用 32 位应用程序在高级设置中设置为 True。

万维网发布服务 (W3SVC) 在属性中选中了允许服务与桌面交互。

如果有人知道如何解决这个问题,请告诉我。谢谢。

【问题讨论】:

  • “不工作”不是对问题的有效描述。您遇到的确切问题是什么?如果AcroRd32.exe 已启动但未打印,则这是 Acrobat 的问题,而不是 IIS 或您的程序代码问题,应由 Adob​​e 支持部门处理。
  • 为什么不捕获进程的输出呢?看到这个:stackoverflow.com/a/285841/1623249
  • 澄清一下,问题是该过程未完成且 PDF 未打印。此外,我尝试执行一个 .bat 文件以放弃 Acrobat 的问题并得到相同的结果。我做了一些测试,捕获了 l19 建议的过程输出,并且命令被正确调用。显然该过程正在执行,但它永远不会完成。我添加了 .WaitForExit() 并且网页没有回复。你还有什么建议我可以尝试的吗?非常感谢您的帮助。

标签: c# asp.net asp.net-mvc process.start iis-8.5


【解决方案1】:

为 Foxit Reader (https://www.foxitsoftware.com/products/pdf-reader/) 更改了 Acrobat Reader 并解决了问题。命令行非常相似。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多