我有一个已部署在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上运行Folder Changes View,它显示了对存储文件的文件夹的访问权限以及在%TEMP%中保存的一个文件(这很有趣,在运行文件夹更改视图时不会出现在服务器上。)
任何人都可以想到任何需要我可能忘记的权限的特殊文件夹吗?
答案 0 :(得分:1)
对于权限进行集中是完全正确的,因为通常是问题。
如果一个EXE进程启动并且什么都不做,那么它可能仅用于交互式使用,并且正在提示某些东西。
看this page它说:
CPCTool.exe运行的第一时间提示用户从笛卡尔读取/接受用户协议 - 必须接受此协议或转换器不起作用。
我认为这是它正在做的事情。尝试以应用程序池用户身份登录,启动程序并接受协议。