ApiController中的状态

时间:2016-08-10 19:14:35

标签: c# api asp.net-web-api

我需要为长时间运行的Windows服务提供api,它会进行大量处理并保留该历史记录。需要api来提供系统当前活动级别的状态(处理的记录,等待处理的记录等)。

我想使用自托管的Owin ApiController为系统提供一个很好的界面。但是,ApiController是完全无状态的,并且没有方法(在搜索了几十个IoC帖子之后)将已经活动的实例注入控制器。

有没有办法为ApiController提供类实例?

2 个答案:

答案 0 :(得分:1)

我认为您不能注入旧的控制器实例,因为每次执行请求时都会获得一个新实例。

但是你可以在里面创建一个带有集合的单例对象,你可以将它注入控制器构造函数并在每个请求中使用。

您还可以使用某种持久性,例如DB,您可以在设备上运行。

以下是单例类的示例:

var that = this;
this.menu.togglemenu = function() {
   if (that.menu.state === 'inactive'){
            that.menu.state = 'active';
       }
        else {
            that.menu.state = 'inactive';
        }
    }

答案 1 :(得分:1)

即使你可以在web api控制器中获得Session状态,但这将是一个值得怀疑的解决方案,相反,我建议采用以下方式: