zoukankan      html  css  js  c++  java
  • NetCoreWebApi宿成Windows服务

    原文地址

    如果你的asp.net core服务最后会安装到Windows上运行,那么你肯定不想每次都开个控制台窗口来运行你的服务,因为这样每次开机你都需要手动打开你的服务,其次控制台窗口也容易被用户关掉,你的服务会意外地被终止运行。
    使用下面的方法可以快速地把你的asp.net core程序做成Windows Service服务,这样你就可以让Windows来帮你管理服务了。
    安装 Microsoft.Extensions.Hosting.WindowsServices 包

    使用下面的命令,为你的asp.net core项目安装 Microsoft.Extensions.Hosting.WindowsServices 包

    Install-Package Microsoft.Extensions.Hosting.WindowsServices

    或者Nuget中搜索




    修改 Program.cs

    你要做两件事情,第一为Host增加 UseWindowsServices,第二注掉 config.SetBasePath,因为Windows Service程序的默认文件夹是 c:\windows\system32,在那儿你找不到像appsettings.json这样的依赖文件的,在 UseWindowServices 以后,系统会自动把默认文件夹指向服务中的可执行文件所在的位置。下面是示例代码,注意我们把UseWindowsService放到了所有config的最前面。

     public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)            
                    .UseWindowsService()
                    .ConfigureAppConfiguration((hostingContext, config) =>
                    {
                        //config.SetBasePath(Directory.GetCurrentDirectory());
                        config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
                        config.AddEnvironmentVariables();
                    })
                .ConfigureLogging(logging =>
                {
                    logging.ClearProviders();
                    logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
                })
                .UseNLog()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseNLog();
                    webBuilder.UseStartup<Startup>();
                });            

    这一步里主要是UseWindowsService



    发布asp.net core项目

    使用下面的命令发布asp.net core项目

    dotnet publish  pathToYourProject\yourAspNetProject.csproj --self-contained true -r win-x64 -c Release --output pathToYourProject\yourAspNetProject\bin\Release\netcoreapp3.1\publish\


    注册Windows Service

    使用下面的命令把你的asp.net core可执行文件注册为Windows Service

    sc create 你的服务名字 binPath=程序地址精确到某个.exe文件

    删除服务

    sc delete 你的服务名字

    查看服务(所有)

    Win+R

    然后

    services.msc

    找到服务,启动

    值得一提的是,如果你的程序中有UseStaticFiles

                app.UseStaticFiles(new StaticFileOptions()
                {
                    FileProvider = new PhysicalFileProvider(
                    Path.Combine(Directory.GetCurrentDirectory(), @"Upload")),
                
                    RequestPath = "/Upload",
                    OnPrepareResponse = (Microsoft.AspNetCore.StaticFiles.StaticFileResponseContext staticFile) =>
                    {
                        
                    }
                });

    那你的服务大概率是无法正常启动的。会自动停止,问题再这里,但是怎么解决我没想到。

    后面找到解决方案再候补




  • 相关阅读:
    企业命令linux下处理实时日志生成另一个实时日志
    排序算法Java(android)安卓中的list对象排序
    项目设置一个类似HTML map标签功能的Android组件
    最大算法【Manacher模板】HDU 3068——求最长回文子串
    类实现java面向对象上:接口
    线程方法Android:异步调用详解
    输入数字实现分页功能(三层)
    对象主题设计模式读书笔记观察者模式
    网站算法石榴算法严厉打击下 网站盈利方向何在
    闭包执行JavaScript中的闭包
  • 原文地址:https://www.cnblogs.com/SevenWang/p/15637708.html
Copyright © 2011-2022 走看看