透過TopShelf將OwinSelfHost自宿主打包成服務
基於上述程式集開始編碼
安裝Nuget包 Topshelf
image.png
新建Topshelf 所需的類
Bootstrap.cs 是對Topshelf 釋出的windows服務的開始[Start]和結束[Stop]介面所要做的事情
image.png
/// <summary> /// OWIN host /// </summary> public class Bootstrap : ServiceControl { private IDisposable webApp; public string Address { get; set; } public bool Start(HostControl hostControl) { try { webApp = WebApp.Start<Startup>(Address); return true; } catch (Exception ex) { Console.WriteLine("Topshelf starting occured errors.", ex); return false; } } public bool Stop(HostControl hostControl) { try { webApp?.Dispose(); return true; } catch (Exception ex) { Console.WriteLine($"Topshelf stopping occured errors.", ex); return false; } } }
Program.cs
專案程式主檔案,透過TopShelf將應用打包成windows服務的方法,
class Program { static void Main(string[] args) { HostFactory.Run(x => { x.RunAsLocalSystem(); x.SetServiceName("HangfireSettings.Instance.ServiceName"); x.SetDisplayName("HangfireSettings.Instance.ServiceDisplayName"); x.SetDescription("HangfireSettings.Instance.ServiceDescription"); x.Service(() => new Bootstrap { Address = "" }); }); Console.Read(); } }
程式執行後,只需要在位址列輸入 ,就可以訪問網站
輸入blogposts/1/comments,可以得到如下圖所示內容
image.png
image.png
上圖所示內容就相當於是透過OwinSelfHost自宿主打包後的執行方法,我們不需要新建一個web專案,只需要透過控制檯程式,安裝OWIN自宿主包,對各內容進行配置後,啟動程式,即可透過位址列訪問網路服務請求。
更近一步的是將當前控制檯打包成Topshelf服務,這樣就可以保證後臺執行。
作者:HapplyFox
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/151/viewspace-2820774/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於使用Topshelf建立服務
- SpringBoot Windows 自啟動 - 透過 Windows Service 服務實現Spring BootWindows
- 如何透過分解和增量更改將單體遷移到微服務?微服務
- Nginx設定成服務並開機自動啟動的配置詳解Nginx
- Docker的通俗理解和透過宿主機埠訪問Redis容器的例項DockerRedis
- 透過打包 Flash Attention 來提升 Hugging Face 訓練效率Hugging Face
- Oracle Linux 7.1 透過systemctl將Weblogic設定為開機自啟動OracleLinuxWeb
- windowsSevice程式和topshelf程式建立服務對比Windows
- 透過skaffold快速部署微服務微服務
- 看片神器,將本地影片透過AI自動生成字幕及翻譯字幕AI
- Topshelf 建立.net服務整理和安裝步驟
- 透過spark將資料儲存到elasticsearchSparkElasticsearch
- .NET 微服務——CI/CD(2):自動打包映象微服務
- spark 2.1.0 standalone模式配置&&打包jar包透過spark-submit提交Spark模式JARMIT
- docker內服務訪問宿主機服務Docker
- Leaf:美團分散式ID生成服務開源分散式
- 透過MySQL Workbench 將 SQL Server 遷移到GreatSQLMySqlServer
- Spring Native打包本地映象,無需透過Graal的maven外掛buildtoolsSpringMavenUI
- 使用C#建立windows服務續之使用Topshelf優化Windows服務C#Windows優化
- Topshelf一個用於使用.NET構建Windows服務框架Windows框架
- 如何使用Topshelf與.NET泛型主機建立Windows服務泛型Windows
- 分散式ID生成服務,真的有必要搞一個分散式
- Guuid: 由 Go 語言開發的 UUID 生成服務UIGo
- Electron系列 -- vue專案打包成.exe檔案(透過官方demo的方式)Vue
- Linux如何透過命令重新啟動服務?Linux
- 透過API觸發airflow的DAG任務APIAI
- mysql透過計劃任務建立月表MySql
- 透過http請求啟動jenkins任務HTTPJenkins
- 如何透過 Serverless 提高 Java 微服務治理效率?ServerJava微服務
- SEQSVR:Go + MySQL 實現的高效能 ID 生成服務VRGoMySql
- 如何透過Python將JSON格式檔案匯入redis?PythonJSONRedis
- 透過 Canal 將 MySQL 資料實時同步到 EasysearchMySql
- 透過 C# 將資料寫入到Excel表格C#Excel
- 如何透過PHP將“if”新增到給定字串的前面PHP字串
- 透過Wi-Fi將iPhone與Mac同步的教程iPhoneMac
- electron-forge透過Squirrel.Windows打包導致的asar檔案過大的解決方案UIWindows
- 透過 SAP 官方幫助網站自學 SAP 業務知識的一種辦法網站
- 透過 Samba 服務,建立 Linux 開發環境SambaLinux開發環境