【问题标题】:Azure App Service, run a native EXE to convert a fileAzure App Service,运行本机 EXE 来转换文件
【发布时间】:2017-09-21 07:13:49
【问题描述】:

我有一个基于命令行参数转换文件的本机 EXE。如果我知道如何给出输入和输出文件的完整路径名,我可以在按下某个按钮时从我的应用服务运行这样的 EXE 并等到创建输出文件吗?不能转换为 DLL。

【问题讨论】:

    标签: c# azure azure-web-app-service exe native


    【解决方案1】:

    据我所知,我们可以在 azure app 服务中运行本机 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 不允许,但其他 Web 主机允许。我想知道exe中是否允许这样的事情。
    • 我的 EXE 无法运行,因为它在内部使用隐藏的 RichEdit,因此会调用 GDI+。根据 stackoverflow.com/questions/28293505/…,Azure 沙盒不允许这样做。但无论如何,我会接受你的回答,因为我在最初的问题中没有提到 GDI+。
    猜你喜欢
    • 2021-06-12
    • 1970-01-01
    • 2018-10-04
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 2022-11-04
    • 1970-01-01
    相关资源
    最近更新 更多