我目前有一个 C# Web API,并且 API Controller 有一个静态服务,因此如果调用添加数据,则稍后可以引用数据。我不希望这个变量是静态的,但每次我进行 API 调用时,如果它不是静态的,包含数据列表的服务就会被重置。我该如何解决这个问题?
最佳答案
在每个请求上都会创建一个 Webapi Controller (请参阅 ASP.net Web API: Why are controllers created per request? ),因此这意味着在每个请求上都会重新创建在 webapi Controller 构造函数中实例化的任何变量。静态服务在请求之间仍会保留其值,因为其生命周期不受 webapi Controller 控制。
要拥有非静态服务,您必须引入另一种方法来控制服务的生命周期。看一下依赖注入(inject)http://www.asp.net/mvc/overview/older-versions/hands-on-labs/aspnet-mvc-4-dependency-injection更好地了解如何做到这一点。解决问题的最简单方法是使用 IoC 容器,例如 http://www.ninject.org/ .
关于C# Web API 服务数据不持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29463920/