加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – 我可以在WebAPI messageHandler中使用Autofa

发布时间:2020-12-15 20:39:41 所属栏目:asp.Net 来源:网络整理
导读:我成功地在我的ASP.NET WebAPI项目中连接了Autofac,现在我想知道如何能够解决我的MessageHandlers中的服务. 由于MessageHandler必须在应用程序启动时添加,很明显,我将无法在请求生存期内解决这些问题.这里没有问题 但是,我想在MessageHandler的SendAsync方法
我成功地在我的ASP.NET WebAPI项目中连接了Autofac,现在我想知道如何能够解决我的MessageHandlers中的服务.

由于MessageHandler必须在应用程序启动时添加,很明显,我将无法在请求生存期内解决这些问题.这里没有问题

但是,我想在MessageHandler的SendAsync方法执行期间找到一种获取当前请求生存范围的方法,以便能够(例如)执行令牌验证,登录存储库等…

我该怎么办?

解决方法

您可以在HttpRequestMessage上使用GetDependencyScope()扩展方法,该方法为您提供了一个IDependencyScope,您可以从其中解析您处理程序中所需的任何服务:
public class MyHandler : DelegatingHandler
{
    protected override Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request,CancellationToken cancellationToken)
    {
        IMyService myservice =
         (IMyService)request.GetDependencyScope().GetService(typeof(IMyService));
        // Do my stuff with myservice
        return base.SendAsync(request,cancellationToken);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读