C# Web API 服务数据未持久化
C# Web API service data not persisting
我目前有一个 C# web API 并且 api 控制器有一个 STATIC 服务,因此如果调用添加数据,稍后将能够引用该数据。我不希望这个变量是静态的,但每次我调用 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 to get a better idea of how to do this. The easiest way to get around your issue is to use an IoC container such as http://www.ninject.org/.
我目前有一个 C# web API 并且 api 控制器有一个 STATIC 服务,因此如果调用添加数据,稍后将能够引用该数据。我不希望这个变量是静态的,但每次我调用 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 to get a better idea of how to do this. The easiest way to get around your issue is to use an IoC container such as http://www.ninject.org/.