.NET Core 3.1控制台应用程序作为Windows服务

布拉德

我目前有一个与ASP.NET Core 3.1一起运行的大型控制台应用程序。我现在的任务是使它作为窗口服务在我们的一台服务器上进行工作。我已经准备就绪,可以在服务器本身上将其作为服务运行,但是我目前停留的一件事是如何在代码中实际更改它,以使其在服务中运行而不破坏它。

我已经发现一对夫妇教程像这样那些解释如何运行一个控制台应用程序作为一种服务,但是所有的人,我发现从一个新的项目开始。我的问题是我当前的项目已经写好了。我要寻求帮助的主要问题是,如何使我的项目作为Windows服务工作,同时还要保留startup.cs中当前的功能。对于上下文,这是我当前的startup.cs和program.cs:

启动文件

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
        services.AddSignalR();
        services.AddTransient<SharePointUploader>();
        services.AddTransient<FileUploadService>();
        services.AddSingleton<UploaderHub>();
        //services.AddAuthentication(IISDefaults.AuthenticationScheme);
        services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
        services.AddAuthorization();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHttpsRedirection();
        }

        app.UseRouting();

        app.UseAuthentication();
        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
            endpoints.MapHub<UploaderHub>("/uploadHub");
        });
    }
}

Program.cs

public class Program
{
    public static void Main(string[] args)
    {
        var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
        try
        {
            logger.Debug("init main");
            CreateHostBuilder(args).Build().Run();
        }
        catch (Exception exception)
        {
            //NLog: catch setup errors
            logger.Error(exception, "Stopped program because of exception");
            throw;
        }
        finally
        {
            // Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
            NLog.LogManager.Shutdown();
        }
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            })
            .ConfigureLogging(logging =>
            {
                logging.ClearProviders();
                logging.SetMinimumLevel(LogLevel.Trace);
            })
            .UseNLog();
}

我真的不明白当作为Windows服务运行时应该如何工作(基于上面链接的教程)。任何帮助将不胜感激。

布拉德

在问了几个小时后,当我解决该问题时,我忘了回答这个问题,但是您可以在Host.CreateDefaultBuilder(args)行中添加“ .UseWindowsService()”。例如:

 public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseWindowsService()                     //<==== THIS LINE
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            })
            .ConfigureLogging(logging =>
            {
                logging.ClearProviders();
                logging.SetMinimumLevel(LogLevel.Trace);
            })
            .UseNLog();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.Net Core 3控制台应用程序中带有Serilog的appsettings.json中的哨兵配置

来自分类Dev

在.NET Core控制台应用程序中将app.config文件与NUnit3一起使用

来自分类Dev

.Net Core /控制台应用程序/配置/ XML

来自分类Dev

.NET Core 控制台应用程序的实体框架

来自分类Dev

.NET Core DI-在控制台应用程序中处理Singleton服务

来自分类Dev

Net Core 2 控制台应用程序 - DI“无法解析类型的服务...”

来自分类Dev

在Mac或Windows上运行.NET Core控制台应用程序

来自分类Dev

.NET Core 3.1控制台应用程序将无法在Windows 7上运行

来自分类Dev

在.NET Core控制台应用程序中为EF Core DbContext服务错误建立了依赖项注入

来自分类Dev

将 .NET Core 控制台应用程序转换为自包含应用程序

来自分类Dev

如何在 .Net Core 控制台应用程序中引用 .Net Core 库

来自分类Dev

如何允许Windows防火墙通过.NET Core控制台应用程序进行FTP连接?

来自分类Dev

在标准 .net 控制台应用程序中使用 .Net Core dll

来自分类Dev

如何使.net Core 3.1控制台应用程序中的控制台记录器正常工作

来自分类Dev

如何从提供程序(C#.NET Core控制台应用程序)获取Args?

来自分类Dev

从 .NET Core 控制台应用程序内部将 .NET Framework 控制台应用程序启动到新窗口中

来自分类Dev

Wcf服务可在.NET Core 3.1控制台应用程序中使用,但无法在ASP.NET Core 3.1 Web API中使用

来自分类常见问题

自托管的.NET Core控制台应用程序中的Startup.cs

来自分类Dev

将HttpClient与.NET Core控制台应用程序一起使用

来自分类Dev

.NET Core 3.0控制台应用程序无法读取文件,引发UnauthorizedAccessException

来自分类Dev

启动控制台应用程序时.NET Core 3.0获取无效的runtimeconfig.json

来自分类Dev

如何获取.Net Core控制台应用程序.exe文件所在目录的路径?

来自分类Dev

伪造/模拟.Net Core依赖注入控制台应用程序

来自分类Dev

.NET Core控制台应用程序如何部署到Kubernetes?

来自分类Dev

如何在.NET Core控制台应用程序中设置DI容器?

来自分类Dev

在Linux App Service的Docker容器中运行.Net Core控制台应用程序

来自分类Dev

将HttpClient与.NET Core控制台应用程序一起使用

来自分类Dev

.Net Core控制台应用程序-调试失败-与远程端点的连接已终止

来自分类Dev

如何在.NET Core控制台应用程序中实现MVVM?

Related 相关文章

  1. 1

    .Net Core 3控制台应用程序中带有Serilog的appsettings.json中的哨兵配置

  2. 2

    在.NET Core控制台应用程序中将app.config文件与NUnit3一起使用

  3. 3

    .Net Core /控制台应用程序/配置/ XML

  4. 4

    .NET Core 控制台应用程序的实体框架

  5. 5

    .NET Core DI-在控制台应用程序中处理Singleton服务

  6. 6

    Net Core 2 控制台应用程序 - DI“无法解析类型的服务...”

  7. 7

    在Mac或Windows上运行.NET Core控制台应用程序

  8. 8

    .NET Core 3.1控制台应用程序将无法在Windows 7上运行

  9. 9

    在.NET Core控制台应用程序中为EF Core DbContext服务错误建立了依赖项注入

  10. 10

    将 .NET Core 控制台应用程序转换为自包含应用程序

  11. 11

    如何在 .Net Core 控制台应用程序中引用 .Net Core 库

  12. 12

    如何允许Windows防火墙通过.NET Core控制台应用程序进行FTP连接?

  13. 13

    在标准 .net 控制台应用程序中使用 .Net Core dll

  14. 14

    如何使.net Core 3.1控制台应用程序中的控制台记录器正常工作

  15. 15

    如何从提供程序(C#.NET Core控制台应用程序)获取Args?

  16. 16

    从 .NET Core 控制台应用程序内部将 .NET Framework 控制台应用程序启动到新窗口中

  17. 17

    Wcf服务可在.NET Core 3.1控制台应用程序中使用,但无法在ASP.NET Core 3.1 Web API中使用

  18. 18

    自托管的.NET Core控制台应用程序中的Startup.cs

  19. 19

    将HttpClient与.NET Core控制台应用程序一起使用

  20. 20

    .NET Core 3.0控制台应用程序无法读取文件,引发UnauthorizedAccessException

  21. 21

    启动控制台应用程序时.NET Core 3.0获取无效的runtimeconfig.json

  22. 22

    如何获取.Net Core控制台应用程序.exe文件所在目录的路径?

  23. 23

    伪造/模拟.Net Core依赖注入控制台应用程序

  24. 24

    .NET Core控制台应用程序如何部署到Kubernetes?

  25. 25

    如何在.NET Core控制台应用程序中设置DI容器?

  26. 26

    在Linux App Service的Docker容器中运行.Net Core控制台应用程序

  27. 27

    将HttpClient与.NET Core控制台应用程序一起使用

  28. 28

    .Net Core控制台应用程序-调试失败-与远程端点的连接已终止

  29. 29

    如何在.NET Core控制台应用程序中实现MVVM?

热门标签

归档