首页 > 编程语言 >asp.net 启动后重启 端口被占用 Global.asax 以及Application_End

asp.net 启动后重启 端口被占用 Global.asax 以及Application_End

时间:2023-12-15 16:14:55浏览次数:43  
标签:asp End 占用 Global 端口 asax Application

最近在维护一个老的asp.net项目

最开始发现一个诡异的现象,那就是本地调试的时候这个项目经常在启动后莫名其妙的重启

逐步调试发现原来是该项目会监听一个本地端口,项目重启时会出现端口被占用的情况,为了保证端口不会占用,会先判断一下端口的情况,如果发现端口被占用,就强制杀掉占用该端口的进程,这就出现了启动程序后杀掉自己释放端口然后重启的诡异现象

虽然一定程度上解决了端口占用的问题,但是感觉很丑陋

而端口被占用的问题的根本原因是上次程序退出时没有及时的释放端口,如果能解决这个问题,不就不用去强制杀进程了吗

asp.net的Global.asax中有个Application_End,这个事件从名字上看是程序结束的时候触发的,我们可以试试在这里手动释放端口

于是我在Global.asax中定义了字段并将其指向了监听服务对象,然后在Application_End调用其Dispose,希望能在程序关闭的时候保证释放端口

但是我发现每次执行到Application_End时就报错,说是监听服务对象为空,原来是在触发Application_End时,Global.asax的非静态成员都已经释放为null了,网上搜到的关于Application_End的描述说的是:在HttpApplication 类的最后一个实例被销毁时,该事件被触发。在一个应用程序的生命周期内它只被触发一次。

因此咱们不能使用Global的实例成员来引用监听服务对象,于是我将其改成Global的静态成员,然后就不报错了,测试了下也没有出现端口占用的情况了

标签:asp,End,占用,Global,端口,asax,Application
From: https://www.cnblogs.com/luludongxu/p/17903564.html

相关文章

  • owasp-top10 2023 详解
    经典的TOP10漏洞 A1注入漏洞在2013、2017的版本中都是第一名,可见此漏洞的引入是多么的容易,同时也证明此漏洞的危害有多么严重。攻击方式利用应用程序弱点,通过恶意字符将恶意代码写入数据库,获取敏感数据或进一步在服务器执行命令。漏洞原因未审计的数据输入框使用网址直接传......
  • Highcharts 用SVGRenderer方法使柱状图连接列边​
    需求在Highcharts中,可以使用SVGRenderer方法来创建路径连接柱状图的列边,并根据具体的数据和需求进行适当的调整和扩展。分析要使用Highcharts的SVGRenderer方法来绘制柱状图并连接列边,可以按照以下步骤进行操作:创建柱状图:使用Highcharts的 chart 方法创建一个柱状图,并......
  • 使用 FastEndpoints 来垂直切换Web API的控制器方法
    在我们开发项目的WebAPI的时候,随着项目功能要求越来越多,可能我们会为控制器基类增加越来越多的基础功能,有些功能有一定的适应性,但可能在一般的子类中用不到,而随着对控制器控制要求越来越精细,那么需要为基类或者子类增加更多的控制功能,这样随着迭代的进行,有些控制器的功能会显得越......
  • asp.net core 使用newtonsoft完美序列化WebApi返回的ValueTuple
    https://www.cnblogs.com/kugar/p/12334210.html   由于开发功能的需要,又懒得新建太多的class,所以ValueTuple是个比较好的偷懒方法,但是,由于WebApi需要返回序列化后的json,默认的序列化只能将ValueTuple定义的各个属性序列化成Item1...n  但是微软还是良心的为序列......
  • 两个线程共享一个套接字,其中一个线程使用sendmsg函数不断发送消息到该套接字,另一个线
    以下是使用C语言写的一段代码,实现两个线程共享一个套接字,其中一个线程使用sendmsg函数不断发送消息到该套接字,另一个线程使用recvmsg函数不断接收该套接字的消息,并打印出来的功能点击查看代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.......
  • 【异常】File encoding has not been set, using platform encoding UTF-8, i.e. buil
    From: https://www.cnblogs.com/duanxianyouyang/p/14679926.htmlFileencodinghasnotbeenset,usingplatformencodingUTF-8,i.e.buildisplatformdependent!Usingplatformencoding(UTF-8actually)tocopyfilteredresources,i.e.buildisplatformdepen......
  • Spring系列:基于Spring-AOP和Spring-Aspects实现AOP切面编程
    目录一、概念及相关术语概念相关术语①横切关注点②通知(增强)③切面④目标⑤代理⑥连接点⑦切入点作用二、基于注解的AOP技术说明准备工作创建切面类并配置各种通知切入点表达式语法重用切入点表达式获取通知的相关信息环绕通知切面的优先级三、基于XML的AOP准备工作实现一、概念......
  • 【活动回顾】Databend 云数仓与 Databend Playground 扩展组件介绍
    2023年12月7日,作为KubeSphere的合作伙伴,Databend荣幸地受邀参与了KubeSphere社区主办的云原生技术直播活动。本次活动的核心议题为「Databend云数仓与DatabendPlayground扩展组件介绍」,此次分享由DatabendLabs的研发工程师尚卓燃担任主讲嘉宾,向与会者呈现了一场......
  • 软件测试/人工智能|解决Selenium中的异常问题:“error sending request for url”
    前言在使用Selenium自动化测试时,有时会遇到“errorsendingrequestforurl”这样的异常。这个问题通常与Chrome浏览器驱动程序和网络请求相关。本文让我们来了解如何解决这个问题。问题原因这个异常通常出现在Selenium与Chrome浏览器交互时,可能由于网络请求或Chrome驱动程序......
  • ASP.NET WebApi(.Net Framework) 应用CacheManager
    ASP.NETWebApi(.NetFramework)应用CacheManager,内存+Redis1,WebApi版本选.net4.6.2以上版本2,nuget包Unity(4.0.0.1)Unity.AspNet.WebApi(4.0.0.1)CacheManager.CoreCacheManager.Microsoft.Extensions.Caching.MemoryCacheManager.Microsoft.Extensions.ConfigurationCacheMa......