0
我有一个本机EXE根据命令行参数转换文件。提供,我知道如何给出输入和输出文件的完整路径名称,当按下某个按钮时,我可以从我的应用程序服务运行这样的EXE,并等待直到输出文件被创建?转换为DLL不是一个选项。Azure应用服务,运行本机EXE来转换文件
我有一个本机EXE根据命令行参数转换文件。提供,我知道如何给出输入和输出文件的完整路径名称,当按下某个按钮时,我可以从我的应用程序服务运行这样的EXE,并等待直到输出文件被创建?转换为DLL不是一个选项。Azure应用服务,运行本机EXE来转换文件
据我所知,我们可以在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();
}
结果:
谢谢,这给了我希望。我会试试看。我使用的EXE创建一些隐藏的窗口和控件进行处理,例如RTF的RichEdit控件。这是主要原因,它不能在DLL中工作。 Azure不允许使用它,但其他网络主机会这样做。我不知道这样的事情是否会被允许在exe文件中。 – user173399
我的EXE不会运行,因为它在内部使用隐藏的RichEdit,因此使用GDI +调用。 Azure Sandbox不允许按照https://stackoverflow.com/questions/28293505/process-start-in-azure-website。但无论如何,我会接受你的回答,因为我在原来的问题中没有提到GDI +。 – user173399