我无法找到通过Autofac解析服务的正确方法,该方法在构造 Owin上下文时使用,并且也在请求端处理.
由于此时OwinContext仍在构建中,因此无法通过调用找到LifetimeScope HttpContext.Current.GetOwinContext().GetAutofacLifetimeScope().OwinContext还没有.
在我的代码中,IAdfsAuthorizationProvider服务直接在该服务中解析Container,但在请求之后不会被处理并且寿命更长.
我可以通过调用创建一个新的LifeTimeScope container.BeginLifetimeScope(),但现在LifeTime被分离了请求,并且可能会解析同一请求中的不同实例.并且无法在正确的时间自行处理lifeTimeScope.
public void Configure(IAppBuilder app)
{
var builder = new ContainerBuilder();
builder.RegisterType<AdfsAuthorizationProvider>().As<IAdfsAuthorizationProvider>().InstancePerLifetimeScope();
var container = builder.Build();
app.UseAutofacMiddleware(container);
// **Service that's not binding to the request lifetime.**
var service = container.Resolve<IAdfsAuthorizationProvider>();
app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
{
Provider = new AuthorizationServerProvider(service),
});
}
Run Code Online (Sandbox Code Playgroud)
有没有人有建议?
我正在使用 Akka.NET 为生产项目创建概念证明,但我面临查询概念理解问题。
情况如下: CoordinatorActor 有一个包含数千个Hotel-Actors.
我想查询所有Hotel-Actors在特定日期有空房的酒店。
当然,我可以通过它们 foreach 并发送.Ask<>特定日期的请求。拿着所有任务的参考并做一个Task.WhenAll(requests). 但这感觉有点不自然。
或者,我可以一次向所有酒店(ActorSelection 或路由器)发送请求特定日期的广播消息,但我不知道他们何时都回复了Tell消息。
有没有人有建议如何解决这个问题?