簡體   English   中英

將控制台應用程序轉換為Windows服務

[英]Convert console application to windows service

我有一個控制台應用程序,我正在運行SignalR。 我試圖將其轉換為Windows服務應用程序。

我只是換了Main方法

static void Main()
{
    var servicesToRun = new ServiceBase[] 
    { 
        new MyService() 
    };
    ServiceBase.Run(servicesToRun);
}

並添加了一個簡單的服務類:

namespace Services
{
    partial class MyService : ServiceBase
    {
        IDisposable SignalR { get; set; }

        public MyService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            const string url = "https://localhost:8080";
            using (SignalR = WebApp.Start<Startup>(url))
            {
                          //TODO: Add Logging
            }
        }

        protected override void OnStop()
        {
            SignalR.Dispose();
        }
          }
}

但是現在當我嘗試運行安裝程序時,我收到錯誤:

初始化安裝時發生異常:System.BadImageFormatException:無法加載文件或程序集'file:/// C:\\ Code \\ MyCode \\ Services \\ bin \\ Debug \\ MyService.exe'或其依賴項之一。 嘗試加載格式不正確的程序。

有沒有簡單的方法來調試此消息? 或者有沒有人知道我可能錯過了什么?

你是如何運行安裝的? 我猜你是在用64位安裝程序注冊一個32位編譯的應用程序,反之亦然

換句話說,運行:

%windir%\Microsoft.NET\Framework\v4.0.30319\installutil.exe <My x64 DLL/EXE>

要么:

%windir%\Microsoft.NET\Framework64\v4.0.30319\installutil.exe <My x86 DLL/EXE>

您錯過了在服務中創建安裝程序在設計視圖中的服務中,右鍵單擊並選擇添加安裝程序或類似,我的vs是西班牙語。 這將向項目ProjectInstaller添加一個新組件,其中包含serviceProcessInstaller1serviceInstaller1中的兩個組件,您必須確定一些屬性,這些屬性可以確保安裝,服務帳戶,名稱,描述等的行為。您可以運行installutil.exe安裝,沒有這個installutil什么都不做

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM