使用ProcessStartInfo在asp.net中从IIS执行C ++ .exe

时间:2015-07-21 11:18:36

标签: c# asp.net web-services iis

我在C#中使用Web Service执行简单C ++(。exe)。它在开发环境中工作正常(在Visual Studio中),但是当我在IIS中托管时,它不会被执行。我尝试使用Simple C#Console Application它对我来说很好。 我已经获得了

的权限
  1. 每个人
  2. IUSR
  3. 本地服务
  4. 网络服务
  5. 网络
  6. IIS_Users
  7. 从IIS到编辑权限。

    [WebMethod]
        public string GETOCR()
        { 
            string OCROutput ="";
            ProcessStartInfo startinfo = new ProcessStartInfo("C:\\BSG\\ProcessOCR.exe", "12,13;964,15;964,634;9,634 \"C:\\BSG\\20150709_224156.jpg\" ");
            startinfo.CreateNoWindow = true;
            startinfo.UseShellExecute = false;
            startinfo.RedirectStandardOutput = true;
            startinfo.WindowStyle = ProcessWindowStyle.Normal;
            try
            {
                using (Process exeProcess = Process.Start(startinfo))
                {
                    OCROutput = exeProcess.StandardOutput.ReadToEnd();
                    //Response.Write(OCROutput);
    
    
    
                    exeProcess.WaitForExit();
                }
    
            }
            catch (Exception)
            {
    
                throw;
            }
    
            return OCROutput;
        }
    

1 个答案:

答案 0 :(得分:0)

您需要检查您网站的应用程序池的帐户。为此,请单击IIS中的站点(适用于IIS 7及更高版本),然后单击右侧操作面板中的基本设置。您将看到应用程序池名称,记住它并单击取消。之后转到应用程序池,找到您记得的应用程序池并选择它。点击右侧修改应用程序池面板中的高级设置... 。在流程模型部分中查找身份。身份值是您需要在安全标签中为文件 C:\ BSG \ ProcessOCR.exe 设置权限的帐户(不适用于站点文件夹!)和此程序将向/从(如果有)写入/读取文件的文件夹。

enter image description here