Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net RequestScope()和Kernel.Get<&燃气轮机;在尼尼特_.net_Dependency Injection_Ninject_Webrequest - Fatal编程技术网

.net RequestScope()和Kernel.Get<&燃气轮机;在尼尼特

.net RequestScope()和Kernel.Get<&燃气轮机;在尼尼特,.net,dependency-injection,ninject,webrequest,.net,Dependency Injection,Ninject,Webrequest,如果我使用requeustscope()在ninject中定义绑定,然后调用内核。在请求之外的类型上获取,解析对象的范围将是什么?如果我们研究,我们可以看到请求范围的回调是当前HTTP上下文。瞬态对象的回调为null。如果在请求之外解析服务,则当前HTTP上下文为空。因此,范围是隐式瞬态的,正如下面的测试所示 [Test] public void ServiceInRequestScopeIsImplicitTransientWhenHttpContextIsNull() { var k

如果我使用
requeustscope()
在ninject中定义绑定,然后调用
内核。在请求之外的类型上获取
,解析对象的范围将是什么?

如果我们研究,我们可以看到请求范围的回调是当前HTTP上下文。瞬态对象的回调为null。如果在请求之外解析服务,则当前HTTP上下文为空。因此,范围是隐式瞬态的,正如下面的测试所示

[Test]
public void ServiceInRequestScopeIsImplicitTransientWhenHttpContextIsNull()
{
    var kernel = new StandardKernel();
    kernel.Bind<ServiceInRequestScope>().ToSelf().InRequestScope();

    Assert.That(HttpContext.Current, Is.Null);

    var service0 = kernel.Get<ServiceInRequestScope>();
    var service1 = kernel.Get<ServiceInRequestScope>();

    Assert.That(service0, Is.Not.SameAs(service1));
}
[测试]
当HttpContextIsNull()时,RequestScopeIsImplicitTransient中的公共无效服务
{
var kernel=新的标准内核();
kernel.Bind().ToSelf().InRequestScope();
Assert.That(HttpContext.Current,Is.Null);
var service0=kernel.Get();
var service1=kernel.Get();
Assert.That(service0,Is.Not.SameAs(service1));
}

我想知道如何做类似的事情。我有在请求期间做出的决议,一些工厂在请求之后坚持。使用NamedScope和ContextPreservation并不能帮助我在一个逻辑请求的上下文中解决问题。