0

ninject 拡張機能を使用した wcf サービスで問題が発生しました。サービスを呼び出そうとしたときにパラメーターなしのコンストラクターがない場合、パラメーターなしのコンストラクターを取得したときに、それが見つからないというエラーが発生しました。

  [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class ContractService: IContractService
{
 public ContractService()
        : this(new AddressService(), new TelephoneService())
    {

    }
    [Inject]
    public ContractWCFService(IAddressService addressService, ITelephoneService telephoneService)
    {

        _addressService = addressService;
        _telephoneService = telephoneService;
    }...
}

次に、パラメーターなしのものが呼び出され、属性 [Inject] を持つ2番目のものを呼び出す必要があると思います。

編集:NinjectWebCommon:

  private static void RegisterServices(IKernel kernel)
    {
        kernel.Bind<ServiceHost>().To<NinjectServiceHost>();

        kernel.Bind<IAddressService>().To<AddressService>().InHttpRequestScope();
        kernel.Bind<TelephoneService>().To<TelephoneService>().InHttpRequestScope();
        kernel.Bind(typeof(IRepository<>)).To(typeof(Repository<>)).InHttpRequestScope();
        kernel.Bind(typeof(EFModel)).ToSelf().InHttpRequestScope();
        IoC.Initialize((StandardKernel)kernel);


    }        

何か案は?

4

1 に答える 1

0

パラメータを渡す/ninject でインスタンスを管理するには、 インスタンス プロバイダ および/または特定の ninject拡張機能を組み合わせる必要があります。

この投稿も役立ちます: Passing parameters to a WCF ServiceHost type with Ninject 2

于 2013-04-22T07:15:59.313 に答える