运行 Azure Function 中的 .exe 可执行文件
Run .exe executable file in Azure Function
我有可执行文件 abcd.exe(它 contains/merged 有很多 .dll)。
是否可以在 Azure Cloud Functions 中为 abcd.exe 和 运行 创建 Azure Functions?
abcd.exe 应用程序:
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
**startInfo.Arguments = "/C abcd.exe";**
process.StartInfo = startInfo;
process.Start();
abcd.exe应用程序没有UI(GUI),但它是数学和科学应用程序,它依赖于合并在[=21中的许多.dll =].
谢谢
Is it possible to create Azure Function for abcd.exe and run it in Azure Cloud Functions?
是的,我们可以上传 .exe 文件并 运行 它在 Azure Function 应用程序中。我创建了一个 TimerTrigger Function 应用程序,并 运行 一个 .exe 将记录插入到此函数应用程序的数据库中,这对我来说工作正常。
function.json
{
"bindings": [
{
"name": "myTimer",
"type": "timerTrigger",
"direction": "in",
"schedule": "0 */1 * * * *"
}
],
"disabled": false
}
run.csx
using System;
public static void Run(TimerInfo myTimer, TraceWriter log)
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = @"D:\home\site\wwwroot\TimerTriggerCSharp1\testfunc.exe";
process.StartInfo.Arguments = "";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.Start();
string output = process.StandardOutput.ReadToEnd();
string err = process.StandardError.ReadToEnd();
process.WaitForExit();
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}
上传.exe文件到Function app文件夹
我的 .exe 程序中的主要代码
SqlConnection cn = new SqlConnection("Server=tcp:{dbserver}.database.windows.net,1433;Initial Catalog={dbname};Persist Security Info=False;User ID={user_id};Password={pwd};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;");
cn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = "insert into [dbo].[debug]([Name]) values('test')";
cmd.ExecuteNonQuery();
cn.Close();
查询数据库,发现测试记录是从我的.exe文件中插入的
Fred 非常感谢您的帮助。现在,稍作修改,应用程序正在编译并且 运行.
对应用程序的一些小修改:
using System;
using System.Diagnostics;
using System.Threading;
public static void Run(TimerInfo myTimer, TraceWriter log)
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
string WorkingDirectoryInfo =@"D:\home\site\wwwroot\TimerTriggerCSharp1";
string ExeLocation = @"D:\home\site\wwwroot\TimerTriggerCSharp1\MyApplication.exe";
Process proc = new Process();
ProcessStartInfo info = new ProcessStartInfo();
try
{
info.WorkingDirectory = WorkingDirectoryInfo;
info.FileName = ExeLocation;
info.Arguments = "";
info.WindowStyle = ProcessWindowStyle.Minimized;
info.UseShellExecute = false;
info.CreateNoWindow = true;
proc.StartInfo = info;
proc.Refresh();
proc.Start();
proc.WaitForInputIdle();
proc.WaitForExit();
}
catch
{
}
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}
我有可执行文件 abcd.exe(它 contains/merged 有很多 .dll)。 是否可以在 Azure Cloud Functions 中为 abcd.exe 和 运行 创建 Azure Functions?
abcd.exe 应用程序:
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
**startInfo.Arguments = "/C abcd.exe";**
process.StartInfo = startInfo;
process.Start();
abcd.exe应用程序没有UI(GUI),但它是数学和科学应用程序,它依赖于合并在[=21中的许多.dll =].
谢谢
Is it possible to create Azure Function for abcd.exe and run it in Azure Cloud Functions?
是的,我们可以上传 .exe 文件并 运行 它在 Azure Function 应用程序中。我创建了一个 TimerTrigger Function 应用程序,并 运行 一个 .exe 将记录插入到此函数应用程序的数据库中,这对我来说工作正常。
function.json
{
"bindings": [
{
"name": "myTimer",
"type": "timerTrigger",
"direction": "in",
"schedule": "0 */1 * * * *"
}
],
"disabled": false
}
run.csx
using System;
public static void Run(TimerInfo myTimer, TraceWriter log)
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = @"D:\home\site\wwwroot\TimerTriggerCSharp1\testfunc.exe";
process.StartInfo.Arguments = "";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.Start();
string output = process.StandardOutput.ReadToEnd();
string err = process.StandardError.ReadToEnd();
process.WaitForExit();
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}
上传.exe文件到Function app文件夹
我的 .exe 程序中的主要代码
SqlConnection cn = new SqlConnection("Server=tcp:{dbserver}.database.windows.net,1433;Initial Catalog={dbname};Persist Security Info=False;User ID={user_id};Password={pwd};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;");
cn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = "insert into [dbo].[debug]([Name]) values('test')";
cmd.ExecuteNonQuery();
cn.Close();
查询数据库,发现测试记录是从我的.exe文件中插入的
Fred 非常感谢您的帮助。现在,稍作修改,应用程序正在编译并且 运行.
对应用程序的一些小修改:
using System;
using System.Diagnostics;
using System.Threading;
public static void Run(TimerInfo myTimer, TraceWriter log)
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
string WorkingDirectoryInfo =@"D:\home\site\wwwroot\TimerTriggerCSharp1";
string ExeLocation = @"D:\home\site\wwwroot\TimerTriggerCSharp1\MyApplication.exe";
Process proc = new Process();
ProcessStartInfo info = new ProcessStartInfo();
try
{
info.WorkingDirectory = WorkingDirectoryInfo;
info.FileName = ExeLocation;
info.Arguments = "";
info.WindowStyle = ProcessWindowStyle.Minimized;
info.UseShellExecute = false;
info.CreateNoWindow = true;
proc.StartInfo = info;
proc.Refresh();
proc.Start();
proc.WaitForInputIdle();
proc.WaitForExit();
}
catch
{
}
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}