[英]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.