gpt4 book ai didi

使用 Ninject Dispose 的 WCF 未在 requestscope 中触发

转载 作者:行者123 更新时间:2023-12-04 12:11:33 24 4
gpt4 key购买 nike

这是我的模块

internal class WebServiceConfiguration : NinjectModule
{
public override void Load()
{
Bind<IWebService>().To<WebService>().InRequestScope();
}
}

这是 global.asax
public class Global : NinjectHttpApplication
{
protected override IKernel CreateKernel()
{
return new StandardKernel(new WebServiceConfiguration());
}
}

我也试过 InScope(c => OperationContext.Current)

这是我在 IWebService 中使用 IDisposable 的服务
[ServiceBehavior(InstanceContextMode = InstanceContextModeDefinition.Mode)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class WebService : IWebService
{
private readonly ISomeService _someService;

public WebService(ISomeService someService)
{
_someService = someService;
}

public void Dispose()
{
_someService.Dispose();
}

这是服务标记中的 ServiceHostFactory
<%@ ServiceHost Language="C#" Debug="true" Factory="Ninject.Extensions.Wcf.NinjectDataServiceHostFactory" Service="WCFTest.Services.WebService" CodeBehind="WebService.svc.cs" %>

依赖项的注入(inject)有效。我唯一担心的是当客户端关闭服务调用时不会触发 dispose 方法。

我试图删除 Factory="Ninject.Extensions.Wcf.NinjectDataServiceHostFactory"只是为了测试是否会调用 Dipose,它确实调用了,但我当然不会有自动注入(inject)。所以我在设置中可能做错了什么?或者 ninject 有一个错误没有调用 Dispose?

注意:我在 ninject wcf 扩展中获取示例设置并添加了一些 DI。

您的帮助将不胜感激。

顺便说一句:我正在使用 Ninject 3.0.0.15、Ninject.Extensions.Wcf 3.0.0.5、Ninject.Web.Common 3.0.0.7

最佳答案

采用

Bind<IWebService, WebService>().To<WebService>().InRequestScope();

关于使用 Ninject Dispose 的 WCF 未在 requestscope 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10529592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com