首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >状态在ApiController中

状态在ApiController中
EN

Stack Overflow用户
提问于 2016-08-10 19:14:35
回答 2查看 1K关注 0票数 0

我需要为一个长期运行的windows服务提供一个api,该服务可以进行大量的处理,并保留对该历史的记忆。api需要提供系统当前活动级别的状态(已处理的记录、等待处理的记录等)。

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

有办法向ApiController提供类实例吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-10 19:19:50

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

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

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

下面是一个单例类的示例:

代码语言:javascript
复制
using System;

public class Singleton
{
   public Dictionary<string,object> State {get; private set;}
   private static Singleton instance;

   private Singleton() {
        State = new Dictionary<string,object>();
   }

   public static Singleton Instance
   {
      get 
      {
         if (instance == null)
         {
            instance = new Singleton();
         }
         return instance;
      }
   }
}
票数 1
EN

Stack Overflow用户

发布于 2016-08-10 19:21:18

尽管您可以在web控制器中获得会话状态,但它将是一个值得怀疑的解决方案,相反,我建议采用以下方式:

  • 汉火作为依赖项,并将其用于长期运行的任务
  • 使用将信号-r推送到后台任务状态
  • 从API方法返回JobID,并在客户机上使用它订阅signal集线器。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38881767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档