• 解决IIS长连接限制的坑,导致部署在IIS下的.NET Core项目假死


    写在前面的话

    其实很多情况不需要这么麻烦,基于公司项目现状,这是比较方便的做法:把.Net Core项目发布成.exe文件,然后使用Windows服务的方式启动.exe文件

    我知道可以直接将.net core项目发布成Windows服务,并且.exe也不需要通过Windows服务就可以直接运行了

    一、事件起因

    之前我们的项目windows平台是部署在IIS上的,但是出现一个问题:WebSocket长连接数量超过10个,IIS就罢工了,不接受任何请求,导致页面卡死(目前没有想到很好的办法解决,有好的办法请告诉我,谢谢大家),一断开websocket连接,页面就恢复正常了

    二、排查过程

    一开始的时候,使用IIS,长连接数超过10个页面就卡死,但是在Linux下部署没有问题的,所以,一开始就怀疑是IIS的问题,

    验证方法:通过CMD命令行的方式启动项目,结果没问题

    到此,基本确定只要不使用IIS部署,就不会有问题了

    三、解决方案

    把原有.Net Core项目发布成.exe文件(可以直接双击运行的,但是会有一个控制台窗口),然后把.exe封装到Windows服务里面

    1、.Net Core项目发布成.exe文件

    1)修改GDSMPlateForm.csproj文件

    在<PropertyGroup>节点下,添加

    <OutputType>Exe</OutputType>

    <RuntimeIdentifier>win10-x64</RuntimeIdentifier>

    注:系统类型看自己运行环境

    2)使用cmd命令发布

    打开cmd,进入.csproj文件所在文件夹,然后执行dotnet publish GDSMPlateForm.csproj

    如上图,发布成功,发布文件路径:D:web代码GDSM4.1GDSMPlateFormGDSMPlateForminDebug etcoreapp2.0win10-x64publish

    3)运行.exe文件

    双击GDSMPlateForm.exe文件

    如上图,运行成功,可以直接在浏览器访问,http://localhost:5000

    2、把.exe封装到Windows服务里

    使用Nssm 搭建windows服务

    1) 下载nssm :   http://www.nssm.cc/download

    publish文件夹(文件夹名称可以随便取),放发布文件

    2)安装服务

     进入cmd命令行,安装服务: nssm install GDSMService  服务名称可以随便取

     

     弹出窗口,Application Path:发布文件夹的.exe文件,我的是C:UsersJH-TESTDownloads ssm-2.24 ssm-2.24win64publishGDSMPlateForm.exe

    Startup directory:发布文件夹,我的是C:UsersJH-TESTDownloads ssm-2.24 ssm-2.24win64publish

    Arguments:不用填

    最后,点击Install Service

     安装成功

    3)启动服务

     可以看到刚安装的服务,右键启动

     启动成功,到此为止,把.net core发布成.exe并通过windows服务启动,就完成了

    4)卸载服务

    使用命令: sc delete GDSMService

    注意:要先停止服务,再卸载,否则会出现虽然服务已经删了,但是之前的服务还在运行

    总结:这个解决方案可能不是最好的,但是就目前的问题来说确实达到了目的,后续可能会考虑,改写代码,直接搞一个可以发布成windows服务的版本,

    更重要的是为了记录一下这个问题吧,方便自己查阅,好记性不如烂笔头嘛

  • 相关阅读:
    MySQL 虚拟列 Secondary Indexes and Generated Columns 基于列产生索引
    iOS证书(.p12)和描述文件(.mobileprovision)申请
    Filecoin indexer 技术解读
    CRC校验码简介及CRC16的计算方法
    cmake中添加引用动态链接和静态链接库
    最新云原生网络技术标准来了,为企业提供基础架构能力权威指南
    开发、运维、业务都说好的全栈云原生长这样!
    DevSecOps:云原生安全风险“避坑”指南
    rediscli 命令总结
    win10更新提示要卸载virtualbox
  • 原文地址:https://www.cnblogs.com/wangxiaorang/p/14836997.html
Copyright © 2020-2023  润新知