繁体   English   中英

ASP.NET Process.Start在IIS8上不起作用(Windows 8.1)

[英]ASP.NET Process.Start not working on IIS8 (Windows 8.1)

在过去的几天里,我一直在努力使这一工作正常进行,并尝试了所有建议的解决方案,包括此处的解决方案:

System.Diagnostics.Process.Start无法从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 vs 64)。 我还在调试。

代码在以下情况下正在打印 PDF:

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

在以下情况下,代码不会打印 PDF:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM