在我的名为“ Ks”的mvc项目的ASP样板中
调用webapi,ioc将KsSession解析为派生类的相关实例,如here
但是,当我尝试解决一个名为MobileUserService的服务而不注入但“全局”地服务时,问题就开始了,如下所示。 从第二次调用开始,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中添加了很多详细信息,但这是正在发生的事情的简明版本。
答案 0 :(得分:1)
看起来您应用了错误的做法。我将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>();
}