"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>();
}
在我的名为 "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>();
}