Ves*_*Ves 13 c# azure azure-functions
我有可执行文件abcd.exe(它包含/合并了许多.dll).是否可以为abcd.exe创建Azure功能并在Azure云功能中运行它?
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();
Run Code Online (Sandbox Code Playgroud)
该abcd.exe应用程序没有用户界面(GUI),但它是数学和科学应用,并从中内部abcd.exe合并许多.dll文件依赖.
谢谢
Fei*_*Han 22
是否可以为abcd.exe创建Azure功能并在Azure云功能中运行它?
是的,我们可以上传.exe文件并在Azure Function应用程序中运行它.我创建了一个TimerTrigger函数应用程序,并运行一个.exe,它将记录插入到这个函数应用程序的数据库中,这对我来说很好.
function.json
{
"bindings": [
{
"name": "myTimer",
"type": "timerTrigger",
"direction": "in",
"schedule": "0 */1 * * * *"
}
],
"disabled": false
}
Run Code Online (Sandbox Code Playgroud)
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}");
}
Run Code Online (Sandbox Code Playgroud)
将.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();
Run Code Online (Sandbox Code Playgroud)
弗雷德非常感谢您的帮助。现在,只需稍加修改,应用程序就可以编译和运行。
对应用程序的一些小的修改:
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}");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9067 次 |
| 最近记录: |