Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net中托管套接字服务-应用程序启动问题&;应用程序结束_C#_Asp.net_Sockets_Global Asax - Fatal编程技术网

C# 在asp.net中托管套接字服务-应用程序启动问题&;应用程序结束

C# 在asp.net中托管套接字服务-应用程序启动问题&;应用程序结束,c#,asp.net,sockets,global-asax,C#,Asp.net,Sockets,Global Asax,我们有一个组件需要放在asp.net中,它在一个已知端口上创建一个侦听套接字。我们使用套接字的原因是asp.net组件需要从外部服务接收事件,而其他技术不够快速或灵活 我们在application_start中启动套接字侦听,并在application_end中关闭套接字。问题是,如果我们接收到对网站的http请求,并修改web.config,则在调用应用程序\u end之前调用应用程序\u start事件,因此我们无法打开套接字(我们得到一个关于打开重复套接字的错误)。在web.config更

我们有一个组件需要放在asp.net中,它在一个已知端口上创建一个侦听套接字。我们使用套接字的原因是asp.net组件需要从外部服务接收事件,而其他技术不够快速或灵活

我们在application_start中启动套接字侦听,并在application_end中关闭套接字。问题是,如果我们接收到对网站的http请求,并修改web.config,则在调用应用程序\u end之前调用应用程序\u start事件,因此我们无法打开套接字(我们得到一个关于打开重复套接字的错误)。在web.config更改后启动的应用程序中,我们没有对原始套接字的引用,因此无法从此处关闭它

有办法解决这个问题吗

干杯


MrT

在开始监听之前获取互斥锁,监听结束后释放互斥锁怎么样。这样,如果前一个套接字仍在侦听,互斥锁将一直阻塞,直到前一个套接字关闭。

听起来像是一个错误的体系结构

应用程序_Start在应用程序_End之前执行,因为IIS正在为您启动一个新的AppDomain,并将在使用它之前启动它。如果您根据时间安排或请求数量启用应用程序池的回收,它也会这样做


听起来你想让asp.net做/管理一些事情。我会尝试构建一个可以执行任何需要执行的操作的服务,并更新应用程序状态(通常是数据库),然后让您的asp.net应用程序从中读取,从而从asp.net中获取自定义套接字侦听代码。使用windows服务托管此套接字侦听器,您可以根据需要或以其他方式将其调用到asp.net。无论采用哪种方式,您都会少很多麻烦。

超级快速进入asp.net没有太多选择。仅限asmx、wcf或msmq