2017-09-21 67 views
0

我有一个本机EXE根据命令行参数转换文件。提供,我知道如何给出输入和输出文件的完整路径名称,当按下某个按钮时,我可以从我的应用程序服务运行这样的EXE,并等待直到输出文件被创建?转换为DLL不是一个选项。Azure应用服务,运行本机EXE来转换文件

回答

1

据我所知,我们可以在Azure应用服务中运行本机exe文件。

但我们无法直接将参数传递给本机exe。

您需要编写一个Web应用程序或其他内容供用户键入输入参数。

然后你可以使用Process.Start method运行exe。

关于如何做到这一点,您可以参考此代码示例。

我使用ASP.NET MVC获取输入参数,然后将参数发送到exe并获得结果。

public ActionResult Index() 
    { 


     var proc = new Process 
     { 
      StartInfo = new ProcessStartInfo 
      { 
       FileName = Server.MapPath("/exe/Sum.exe"), 
       //Arguments could be replaced 
       Arguments = "1 2", 
       UseShellExecute = false, 
       RedirectStandardOutput = true, 
       CreateNoWindow = true 
      } 
     }; 

     proc.Start(); 
     while (!proc.StandardOutput.EndOfStream) 
     { 
      string line = proc.StandardOutput.ReadLine(); 
      // do something with line 

      Response.Write(" The result is : " + line); 

     } 

     //await getResultAsync(); 
     return View(); 
    } 

结果:

+0

谢谢,这给了我希望。我会试试看。我使用的EXE创建一些隐藏的窗口和控件进行处理,例如RTF的RichEdit控件。这是主要原因,它不能在DLL中工作。 Azure不允许使用它,但其他网络主机会这样做。我不知道这样的事情是否会被允许在exe文件中。 – user173399

+0

我的EXE不会运行,因为它在内部使用隐藏的RichEdit,因此使用GDI +调用。 Azure Sandbox不允许按照https://stackoverflow.com/questions/28293505/process-start-in-azure-website。但无论如何,我会接受你的回答,因为我在原来的问题中没有提到GDI +。 – user173399