【问题标题】:ASP.NET Core 2 WEB API - Dependency InjectionASP.NET Core 2 WEB API - 依赖注入
【发布时间】:2018-03-24 05:59:29
【问题描述】:

当使用 WEB API(仅)时,API 控制器和普通的 Web 控制器有区别吗?我的意思是在使用生命周期之一添加这样的服务时:

  • services.AddSingleton<IService, Service();
  • services.AddScoped<IService, Service();
  • services.AddTransient<IService, Service();

由于 REST 是无状态的,返回网页的 Controller 或返回 JSON 的 Controller 中的服务之间的行为会有所不同吗?

【问题讨论】:

  • 不,这里没有区别。

标签: asp.net-core asp.net-core-webapi asp.net-core-2.0 asp.net-apicontroller


【解决方案1】:

是的,在 ASP.NET Core 之前,应用程序在 ASP.NET MVC 和 ASP.NET Web API 之间拆分。

ASP.NET Core 改变了这一点。现在,这是一种用于处理请求的通用 MVC 方法(由 MVC 中间件表示),无论它们最终返回数据还是视图。

生命周期不受影响,因为所有请求都执行“相同”的管道实现。

例如,您可以创建定义为返回动态响应数据的控制器操作:

    [HttpGet]
    public dynamic Index(int flag)
    {
        if (flag == 1) return new StatusCodeResult(200);
        if (flag == 2) return new { id = 1, Name = "some text" };
        else return View();
    }

所以取决于查询参数,它会返回 JSON 数据,只返回状态码作为响应,或者查看。并且在控制器实例创建期间(当某些依赖项可能通过 DI 解决时)框架还不知道将使用什么流。

【讨论】:

  • 我知道。也许我的问题不够清楚。想知道添加到 DI 的服务的生命周期是否存在差异。
猜你喜欢
  • 2018-12-31
  • 2017-10-22
  • 2013-12-04
  • 1970-01-01
  • 2018-08-20
  • 2018-12-16
  • 1970-01-01
  • 2017-01-30
  • 2015-11-08
相关资源
最近更新 更多