ASP.NET Core應(yīng)用程序現(xiàn)在是一個(gè)控制臺(tái)應(yīng)用程序,在Windows上直接雙擊啟動(dòng),但如果想讓開發(fā)完成的ASP.NET Core應(yīng)用程序開機(jī)啟動(dòng),可以將ASP.NET Core應(yīng)用程序修改成Windows服務(wù)運(yùn)行,但這需要額外添加代碼,也可以使用IIS來托管ASP.NET Core應(yīng)用程序,但可能需要安裝一些支持IIS的組件,第三個(gè)方式就是用Windows任務(wù)計(jì)劃來設(shè)置開機(jī)啟動(dòng)。
但是,當(dāng)一個(gè)ASP.NET Core應(yīng)用程序直接使用Windows任務(wù)計(jì)劃啟動(dòng)的時(shí)候,ASP.NET Core應(yīng)用程序無法正確讀取到應(yīng)用程序的配置文件從而導(dǎo)致程序運(yùn)行出錯(cuò),問題的原因在于任務(wù)計(jì)劃執(zhí)行的當(dāng)前工作目錄不是ASP.NET Core應(yīng)用程序所在目錄,而直接在ASP.NET Core應(yīng)用程序里面設(shè)置當(dāng)前工作目錄是無效的,應(yīng)用程序啟動(dòng)之前配置文件的目錄可能就已經(jīng)確定了,例如下面的代碼:
var app = builder.Build(); app.UseStaticFiles(); //其它代碼略... string basePath1 = AppContext.BaseDirectory; Environment.CurrentDirectory = basePath1; Console.WriteLine("Set Current Work Directory:{0}", Directory.GetCurrentDirectory()); app.Run();
上面在ASP.NET Core應(yīng)用程序里面設(shè)置當(dāng)前工作目錄是無效的,代碼環(huán)境為 ASP.NET Core WebAPI,.NET 6.0
解決這個(gè)問題是使用另外一個(gè)應(yīng)用程序修改當(dāng)前環(huán)境工作目錄為ASP.NET Core應(yīng)用程序所在目錄即可,假設(shè)這個(gè)應(yīng)用程序名字是Start,用任務(wù)計(jì)劃啟動(dòng)Start.exe,而ASP.NET Core應(yīng)用程序路徑作為Start的命令行參數(shù)即可,完整代碼如下:
namespace Start { internal class Program { static void Main(string[] args) { string basePath1 = AppContext.BaseDirectory; Environment.CurrentDirectory = basePath1; Console.WriteLine("Set Current Work Directory:{0}", Directory.GetCurrentDirectory()); if (args.Length == 0) { Console.WriteLine("no command line args,example:\r\n Start.exe exe_file_path"); System.Threading.Thread.Sleep(3000); return; } string path= args[0]; if (System.IO.File.Exists(path)) { string? path2= Path.GetDirectoryName(path); if (!string.IsNullOrEmpty(path2)) { Environment.CurrentDirectory = path2; Console.WriteLine("Set Current Work Directory:{0}", Directory.GetCurrentDirectory()); } Console.WriteLine("start programe : {0}", path); System.Diagnostics.Process.Start(path); } else { Console.WriteLine("file not exists:{0}", path); } System.Threading.Thread.Sleep(3000); } } }
之后,在任務(wù)計(jì)劃里面如下圖進(jìn)行配置,即可順利的在系統(tǒng)啟動(dòng)就運(yùn)行ASP.NET Core應(yīng)用程序了。
圖1:添加一個(gè)系統(tǒng)啟動(dòng)執(zhí)行任務(wù)的任務(wù)計(jì)劃
圖2:任務(wù)計(jì)劃啟動(dòng)start.exe,然后啟動(dòng)ASP.NET Core應(yīng)用程序。文章來源:http://www.zghlxwxcb.cn/news/detail-712197.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-712197.html
到了這里,關(guān)于使用任務(wù)計(jì)劃開機(jī)啟動(dòng)ASP.NET Core應(yīng)用程序的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!