SIMPL eInjector文檔是瞬態和單身註冊很清楚,他們將如何處置等文件表明,與所有,但預構建的對象註冊的單身人士將獲得當容器配置被處置。簡單的注射器ASP.NET辛格爾頓處置
我的問題特別涉及單登記,我需要設置當ASP.NET應用程序被設置(I發送任何剩餘的消息時該服務被設置)。我的大多數註冊都是暫時的,並且在處理每個請求時處理。當在VS/IISExpress中進行調試時,我永遠不會看到我的單身人士什麼時候被處置 - 或者當容器本身最終被處置時。在我的控制檯應用程序&天青服務我完成後,我簡單地調用container.Dispose()。 ASP.NET最終清理的任何線索?
我完全與你同意有關使用這種方法的問題,但總比什麼都不做在多數情況下(即剛剛扔掉任何未發送的郵件)更好。請記住,即使您使用冗餘方法,也不會失敗保險。我所要求的只是在託管的IIS ASP.NET環境中,確保SimpleInjector容器被丟棄的正確方法是什麼,所以我至少有機會嘗試發送任何本地排隊的消息。 OWIN OnApp是否將相當於Application_End? – pseabury
如果失去信息是一個問題,我真的建議你改變你的設計。在請求運行的其餘部分中,將這些消息保存在相同的數據庫事務中。這是防止信息丟失的一種非常常見的方法。關於OWIN:我不確定OnAppDisposing是做什麼的。您必須閱讀文檔並進行測試。 – Steven
我會再看看w.r.t是如何完成特定的消息傳遞的。數據交易。 IIRC,將消息寫入Azure ServiceBus(我們使用的)必須在環境數據庫事務處理範圍之外完成,這種情況在這裏會失敗。請參閱https://docs.particular.net/nservicebus/azure-service-bus/understanding-transactions-and-delivery-guarantees?version=asb_6。感謝Steven的討論! – pseabury