C# 从WCF服务调用EXE

C# 从WCF服务调用EXE,c#,asp.net,wcf,C#,Asp.net,Wcf,我正在处理一个项目,在这个项目中,一旦可执行文件到达WCF方法的末尾,我就需要运行它,我不能在codebehind中这样做,因为webservice将设置为单向 我尝试了以下方法: System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStart

我正在处理一个项目,在这个项目中,一旦可执行文件到达WCF方法的末尾,我就需要运行它,我不能在codebehind中这样做,因为webservice将设置为单向

我尝试了以下方法:

  System.Diagnostics.Process process = new System.Diagnostics.Process();

  System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
  startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
  startInfo.FileName = "C:\\Test.exe";
  startInfo.Arguments = "Arg";
  process.StartInfo = startInfo;
  process.Start();
WCF Web服务不会抛出任何错误


是否可以从WCF调用可执行文件,或者是否有其他方法可以这样做。

双击程序与从WCF服务启动程序的主要区别在于权限。当您双击该程序时,它将在您的帐户(可能是管理员或超级用户)下运行,而从WCF服务启动时,它将在与WCF应用程序或其所在的应用程序池(通常非常受限)关联的服务帐户下执行

要测试是否存在此问题,请仅在DEV BOX上,临时将administrator分配为应用程序池服务帐户,并查看其是否有效。一旦你确认这是问题,恢复原来的帐户,并调整其权限,直到程序工作

测试它的另一种方法是以交互方式作为IIS帐户登录,然后双击该程序。这将使您看到从服务调用时可能发生的任何错误


还有其他潜在问题(例如,环境变量或当前工作目录在作为您自己运行时与作为WCF服务运行时不同),但我发现权限通常是罪魁祸首。

您如何确定它不运行?它调用我创建的exe文件,将一些文件从一个位置复制到另一个位置,如果我通过双击运行exe,那么文件会被复制,如果我通过WCf执行,则不会复制任何文件如果您调试,它会引发任何异常吗?在IIS中运行您的应用程序池或应用程序的用户是否具有运行test.exe程序的正确权限?您认为使用WCF运行exe文件是一个好主意吗?我的雇主希望我在http请求时使用Selenium废弃数据。我尝试过azure功能,但无法从中运行selenium驱动程序。不,这不是一个好主意。我只会在.exe已经存在的情况下才这么做,这是出于实用主义。如果你有选择的话,我会找到其他的方法。我最初使用Azure函数来触发.exe文件。然后我知道我们不能在它上面运行selenium驱动程序,然后我想我应该得到一个虚拟机并构建一个wcf服务来使用wcf运行chrome。还看到其他东西,让我们看看我们得到了什么。