簡體   English   中英

在asp.net中托管套接字服務 - 與application_start和application_end有關

[英]Hosting a socket service in asp.net - issues with application_start & application_end

我們有一個組件需要坐在asp.net中,在一個眾所周知的端口上創建一個偵聽套接字。 我們擁有套接字的原因是asp.net需要組件需要從外部服務接收事件,而其他技術不夠快或不夠靈活。

我們在application_start中啟動套接字偵聽,並在application_end中關閉套接字。 問題是,如果我們正在接收到網站的http請求並修改web.config,則在調用application_end之前先調用application_start事件,因此我們無法打開套接字(我們收到有關打開重復套接字的錯誤)。 在web.config更改后,我們沒有在application_start中引用原始套接字,因此我們無法從那里關閉它。

有沒有解決的辦法?

干杯,

地鐵

如何在收聽之前獲取互斥鎖,並在收聽結束后釋放它。 這樣,如果它仍在偵聽前一個套接字,Mutex將阻塞,直到前一個套接字關閉。

聽起來像是一個錯誤的體系結構。

Application_Start在Application_End之前執行,因為IIS正在為您啟動一個新的AppDomain,並將在使用它之前將其啟動。 如果您根據時間表或許多請求啟用應用程序池的回收,它也會這樣做。

聽起來你想要asp.net來做/管理東西。 我會嘗試構建一個服務,該服務完成所有需要做的事情,並更新應用程序狀態(通常是數據庫),並讓您的asp.net應用程序從中讀取內容,

從asp.net獲取自定義套接字監聽代碼。 使用Windows服務來托管這個套接字監聽器,你可以根據需要或者相反的方式將它調用到asp.net。 無論哪種方式,你都可以減少麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM