gpt4 book ai didi

c# - WebApi + 简单注入(inject)器 + OWIN

转载 作者:可可西里 更新时间:2023-11-01 08:08:16 27 4
gpt4 key购买 nike

我正在尝试在 WebAPI 项目中将 SimpleInjector 与 OWIN 结合使用。但是,ConfigureAuth 中的以下行失败

app.CreatePerOwinContext(container.GetInstance<ApplicationUserManager>);

异常(exception)情况是ApplicationUserManager 注册为“Web API 请求”生活方式,但该实例是在 Web API 请求的上下文之外请求的。

我正在使用 container.RegisterWebApiRequest<ApplicationUserManager>();在容器初始化中。 (如果我使用 Register 而不是 RegisterWebApiRequest 不会有任何异常(exception),但这不是根据 simple injector docs 的首选方法)

据我了解,ApplicationUserManager需要使用 CreatePerOwinContext 注册OWIN 才能正常工作。我想知道我们如何使用 Simple Injector 来做到这一点,因为 Simple Injector 无法在启动期间解析实例。

this SO answer中的方法我已经试过了但它失败并显示相同的消息。

知道如何解决这个问题吗?

最佳答案

我使用下面的代码来解决这个问题。

public static void UseOwinContextInjector(this IAppBuilder app, Container container)
{
// Create an OWIN middleware to create an execution context scope
app.Use(async (context, next) =>
{
using (var scope = container.BeginExecutionContextScope())
{
await next.Invoke();
}
});
}

然后在注册依赖项后立即调用 app.UseOwinContextInjector(container);

感谢this post

关于c# - WebApi + 简单注入(inject)器 + OWIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27521558/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com