托管ASP.NET Core應用程序到Windows服務中


  由於公司程序前置Nginx反向代理,所以在Windows中部署過程中沒有采用IIS托管.Net Core應用,一直采用控制台dotnet命令直接運行。但是測試過程中,發現程序內Session一直無法覆蓋,可是在打開遠程桌面的時候,一切正常,考慮很久,應該是Windows權限相關的問題,本人才疏學淺,沒找到問題根源,推測用服務形式啟動程序,可以解決這個問題。才有了這篇文章。

 

  Windows部署下常用的兩種方式:

  一、修改目標框架以及啟動方式

    https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/windows-service

    這種方式也是官方推薦的一種,通過修改.csproj文件中目標框架和加載Microsoft.AspNetCore.Hosting.WindowsServices模塊修改程序啟動方式,然后用sc命令創建管理服務。

    實踐過程中發現所有引用的類庫都要修改,果斷放棄,涉及項目類庫太多。

  二、通過instsrv創建服務,無需修改代碼(個人推薦這種方式)

    https://www.cnblogs.com/zhaiqianfeng/p/4622561.html

    https://www.cnblogs.com/zhushunli/p/6043147.html

    網上這方面文章很多,就不造輪子了,重點是這種方式適用於任何程序,對程序沒有入侵。

    重點來了,通過網友的示例,本人成功運行起服務,已經運行一周,目前來看沒有任何問題,但是創建過程比較繁瑣。因此本人通過網上的一些資料,編輯了一個創建刪除服務的一個批處理程序,分享出來。

     點擊下載     

1 del.bat 刪除服務入口文件(需修改) 2 install.bat 創建服務入口文件(需修改) 3 run-del.bat 主文件 4 run-install.bat 主文件 5 instsrv.exe 主程序 6 srvany.exe          主程序       

     del.bat 文件

@echo off cd /d %~dp0 call run-del.bat 服務名稱 pause

    install.bat 文件

@echo off cd /d %~dp0 call run-install.bat 服務名稱 文件路徑 pause

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM