1
我目前有一個C#web API,並且api控制器有一個STATIC服務,因此如果調用添加數據,稍後可以引用數據。我不希望這個變量是靜態的,但是每次我做一個API調用時,包含數據列表的服務都會被重置,如果它不是靜態的。我該如何解決這個問題?C#Web API服務數據不會持久
我目前有一個C#web API,並且api控制器有一個STATIC服務,因此如果調用添加數據,稍後可以引用數據。我不希望這個變量是靜態的,但是每次我做一個API調用時,包含數據列表的服務都會被重置,如果它不是靜態的。我該如何解決這個問題?C#Web API服務數據不會持久
每個請求都會創建一個Webapi控制器(請參閱ASP.net Web API: Why are controllers created per request?),所以這意味着任何在webapi控制器構造函數中實例化的變量都將在每個請求上重新創建。靜態服務仍然會在請求之間保留它的值,因爲它的生存期不受webapi控制器控制。
要獲得非靜態服務,您必須引入另一種方法來控制服務的生命週期。查看依賴注入http://www.asp.net/mvc/overview/older-versions/hands-on-labs/aspnet-mvc-4-dependency-injection以更好地瞭解如何執行此操作。解決您的問題的最簡單方法是使用IoC容器,例如http://www.ninject.org/。