繁体   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