"Globally" 解析服务不再导致 属性 注入

"Globally" resolving service causes no more property injection

在我的名为 "Ks"

的 mvc 项目的 asp 样板中

调用 webapi,ioc 将 KsSession 解析为派生 class 的相关实例,如前所述

但是当我尝试在没有注入的情况下解决名为 MobileUserService 的服务时,问题就开始了,但是 "globally" 如下所示。 从第二次调用开始,KsSession 不再解析。 它发生 属性 设置从构造函数到 NullKsSession 的调用,但不再 属性 注入。

Global.asax中:

protected override void Application_BeginRequest(object sender, EventArgs e)
{
    base.Application_BeginRequest(sender, e);
    var service = Ks.Dependency.IocManager.Instance.Resolve<Service.MobileUser.IMobileUserService>();
}

我的问题是为什么会这样,这样使用服务不合适吗?

请注意,我在 github issue 中添加了大量细节,但这里是对正在发生的事情的简明版本。

看来您的做法不对。我会将 IMobileUserServie 注册为单例。并正式解决。 无论如何,对于您的问题,请尝试创建一个新范围并在您的自定义范围内解析您的界面。虽然我不推荐这个,你可以使用下面的代码

protected override void Application_BeginRequest(object sender, EventArgs e)
{
    base.Application_BeginRequest(sender, e);
    var iocResolver = Ks.Dependency.IocManager.Instance.Resolve<IIocResolver>();
    var scope = iocResolver.CreateScope();
    var service = scope.Resolve<Service.MobileUser.IMobileUserService>();
}