• 托管ASP.NET Core应用程序到Windows服务中


      由于公司程序前置Nginx反向代理,所以在Windows中部署过程中没有采用IIS托管.Net Core应用,一直采用控制台dotnet命令直接运行。但是测试过程中,发现程序内Session一直无法覆盖,可是在打开远程桌面的时候,一切正常,考虑很久,应该是Windows权限相关的问题,本人才疏学浅,没找到问题根源,推测用服务形式启动程序,可以解决这个问题。才有了这篇文章。

      Windows部署下常用的两种方式:

      一、修改目标框架以及启动方式

        https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/windows-service

        这种方式也是官方推荐的一种,通过修改.csproj文件中目标框架和加载Microsoft.AspNetCore.Hosting.WindowsServices模块修改程序启动方式,然后用sc命令创建管理服务。

        实践过程中发现所有引用的类库都要修改,果断放弃,涉及项目类库太多。

      二、通过instsrv创建服务,无需修改代码(个人推荐这种方式)

        https://www.cnblogs.com/zhaiqianfeng/p/4622561.html

        https://www.cnblogs.com/zhushunli/p/6043147.html

        网上这方面文章很多,就不造轮子了,重点是这种方式适用于任何程序,对程序没有入侵。

        重点来了,通过网友的示例,本人成功运行起服务,已经运行一周,目前来看没有任何问题,但是创建过程比较繁琐。因此本人通过网上的一些资料,编辑了一个创建删除服务的一个批处理程序,分享出来。

         点击下载     

    1 del.bat             删除服务入口文件(需修改)
    2 install.bat         创建服务入口文件(需修改)
    3 run-del.bat         主文件
    4 run-install.bat     主文件
    5 instsrv.exe         主程序
    6 srvany.exe          主程序       

         del.bat 文件

    @echo off
    cd /d %~dp0
    call run-del.bat 服务名称
    pause

        install.bat 文件

    @echo off
    cd /d %~dp0
    call run-install.bat 服务名称 文件路径
    pause
  • 相关阅读:
    【LeetCode 15】三数之和
    【LeetCode 14】最长公共前缀
    【LeetCode 13】罗马数字转整数
    【LeetCode 12】整数转罗马数字
    【LeetCode 11】盛最多水的容器
    【LeetCode 10】正则表达式匹配
    【LeetCode 9】回文数
    【LeetCode 8】字符串转换整数 (atoi)
    【LeetCode 7】整数反转
    【LeetCode 6】Z 字形变换
  • 原文地址:https://www.cnblogs.com/niao/p/8624366.html
Copyright © 2020-2023  润新知