ASP.NET Core專案基於Windows 服務的打包託管
阿新 • • 發佈:2018-11-29
1. 工程建立
工程目標框架可為 .NetFramework 或 .NetCore,模板為 .NetCore下的API工程,正常編寫工程程式碼即可
2.轉換專案為Windows服務
- 修改工程的 .csproj 檔案,新增Windows 執行時識別符號
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>
- 新增
Microsoft.AspNetCore.Hosting.WindowsServices
引用包 - 修改 Program.cs 檔案
public class Program
{
public static void Main(string[] args)
{
// 1.修改為呼叫 RunAsService()
CreateWebHostBuilder(args).Build().RunAsService();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
// 2.呼叫 UseContentRoot 並使用應用的釋出位置路徑
var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
var pathToContentRoot = Path.GetDirectoryName(pathToExe);
return WebHost.CreateDefaultBuilder(args)
. ConfigureAppConfiguration((context, config) =>
{
// Configure the app here.
})
.UseContentRoot(pathToContentRoot)
.UseStartup<Startup>();
}
}
3. 釋出工程
可用VS內嵌釋出外掛釋出,格式為“檔案系統”,或者使用命令列釋出,在解決方案資料夾下執行命令(執行時根據工程而定):
dotnet publish --configuration Release --runtime win-x64
4. sc命令工具打包服務(管理員身份執行)
-
建立服務:
在打包後的資料夾下執行命令:
sc create MyServiceName.exe binPath= "MyServiceName.exe path"
注意:binPath 值是應用的可執行檔案的路徑,其中包括可執行檔案的檔名。 等於號和路徑開頭的引號字元之間需要新增空格。 -
啟動服務
sc start MyServiceName.exe
服務啟動成功後,若是Web 應用時,在應用所在路徑中瀏覽應用,預設路徑 http://localhost:5000 -
停止服務
sc stop MyServiceName.exe
-
解除安裝服務
sc delete MyServiceName.exe
END |