これが私のモジュールです
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" %>
依存関係の注入が機能します。私の唯一の懸念は、クライアントがサービス呼び出しを閉じたときに dispose メソッドがトリガーされていないことです。
Dipose が呼び出されるかどうかをテストするためだけに Factory="Ninject.Extensions.Wcf.NinjectDataServiceHostFactory" を削除しようとしましたが、呼び出しましたが、もちろん自動注入はありません。セットアップで何か間違っている可能性がありますか?または、Dispose を呼び出さない ninject にバグがありますか?
注: ninject wcf 拡張機能のサンプル セットアップを取得し、DI を追加しました。
あなたの助けに感謝します。
ところで:私はNinject 3.0.0.15、Ninject.Extensions.Wcf 3.0.0.5、Ninject.Web.Common 3.0.0.7を使用しています