servicestack,simple-injector,perwebrequest,Dependency Injection,servicestack,Simple Injector,Perwebrequest" /> servicestack,simple-injector,perwebrequest,Dependency Injection,servicestack,Simple Injector,Perwebrequest" />

Dependency injection 什么是正确的';根据请求';在ServiceStack API应用程序中使用的简单方法?

Dependency injection 什么是正确的';根据请求';在ServiceStack API应用程序中使用的简单方法?,dependency-injection,servicestack,simple-injector,perwebrequest,Dependency Injection,servicestack,Simple Injector,Perwebrequest,我有一个ServiceStack API应用程序,它使用简单的注入器作为IoC容器。我需要某些组件来实现“按web请求”的生活方式 我查阅了Simple Injector文档,发现它不是一种生活方式,而是两种与“每个web请求”对应的生活方式: 每个Web请求 每个Web API请求 这让我大惑不解,因为我一直认为所有ASP.NET应用程序都使用相同的基本管道,每个web请求通过插入HTTP模块来实现IoC容器。为什么Web API应用程序的情况会有所不同 谁能解释一下哪个最适合ServiceS

我有一个ServiceStack API应用程序,它使用简单的注入器作为IoC容器。我需要某些组件来实现“按web请求”的生活方式

我查阅了Simple Injector文档,发现它不是一种生活方式,而是两种与“每个web请求”对应的生活方式:

  • 每个Web请求
  • 每个Web API请求
  • 这让我大惑不解,因为我一直认为所有ASP.NET应用程序都使用相同的基本管道,每个web请求通过插入HTTP模块来实现IoC容器。为什么Web API应用程序的情况会有所不同


    谁能解释一下哪个最适合ServiceStack API应用程序呢?

    每个Web请求实际上是一个“每个HttpContext请求”,它在封面下使用
    HttpContext.Current.Items
    字典缓存实例。但是,当您使用Web API时,此模型开始失效,这是由Web API的异步模型和Web API应用程序可以在自托管环境中运行这一事实造成的(这意味着:没有
    HttpContext.Current

    这就是Simple Injector为Web API应用程序提供特定生活方式的原因。这种每Web API请求的生活方式在后台使用新的执行上下文作用域,它允许使用异步方法流动作用域

    有人能解释一下哪一个最适合ServiceStack API应用程序吗


    如果ServiceStack本质上是异步的或是自托管的,则最好使用
    webapirequestlifety
    executionContextScopelifety
    。如果总是有HttpRequest.Current在ServiceStack内部运行时,出于好奇,您可以使用
    WebRequestLifestyle

    ,为什么不使用ServiceStack Funq IoC?@Scott:可能是因为他需要Func缺少的一个功能,例如或。@Scott:恐怕答案是我不知道!我没有为应用程序设置IoC。请看以下答案:。这比我的答案更好更准确。