繁体   English   中英

服务器端应用程序无法运行命令

[英]Server-side application fails to run command

我有一个已经部署在Azure虚拟机中的ASP.NET应用程序。 情况如下:

该应用程序OCREngine与其他第三方应用程序一起部署在服务器上。 通过使用对Web服务的服务引用在服务器上执行OCREngine。 大多数情况下,它运行良好。 但是有一个例外:执行分支之一不会运行它需要运行的程序。 两个分支都必须运行一个程序(两个都以相同的方式运行),但是一个分支起作用,而另一个分支则没有。

这有效: CleanJPEG.exe

proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "CleanJPEG.exe";
proc.StartInfo.Arguments = "\"" + tempPages + "Color Info.JPEG\"";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();

而且这个没有: cpctool.exe

proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "cpctool.exe";
proc.StartInfo.Arguments = "\"" + file + "\" -o \"" + tempPages + "page.tiff\"";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();

它们都在同一个文件夹中,该文件夹具有AppPool的完全权限,%TEMP%也是如此。

如果我从服务器运行该应用程序,则一切正常。 但是,当我通过Web服务运行它时,会创建cpctool.exe的一个实例(可以在任务管理器的“后台”进程中看到),但是它没有完成它的工作。 因此,OCREngine的执行永远不会完成。

这最后一部分使我认为这是权限问题,但是我不知道要赋予权限什么。

我在cpctool.exe上运行“ 文件夹更改视图 ”,它显示了对存储文件的文件夹的访问权限,并且一个文件正在%TEMP%中保存(这很有趣,在服务器上运行“文件夹更改视图”时不会出现)。

谁能想到任何需要我忘记的特殊文件夹?

您完全正确地专注于权限,因为通常这是问题所在。

如果EXE进程启动且不执行任何操作,则它可能仅用于交互目的,并提示您执行某些操作。

看着这个页面说:

首次运行CPCTool.exe时,系统会提示用户阅读/接受笛卡尔的用户协议-必须接受该协议,否则转换器将无法工作。

我认为这就是它的作用。 尝试以应用程序池用户身份登录,启动程序并接受协议。

暂无
暂无

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

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