ASP.NET Process.Start无法在IIS8上工作(Windows 8.1)

时间:2015-08-03 03:48:33

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

过去几天我一直试图让这项工作正常运行,并尝试了所有建议的解决方案:

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

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

代码只是在服务器的本地打印机(内联网)中使用Adobe 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)。我还在调试。

以下情况中的代码正在打印

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

以下情况中的代码不打印

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

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

万维网发布服务(W3SVC)允许服务与“属性”中选中的桌面进行交互。

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

1 个答案:

答案 0 :(得分:0)

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