14
ビヘイビア拡張を追加して、サービスクラスがNinjectでインスタンス化されるようにします。私はBehaviorExtensionElementから継承し、それを私のApp.configに登録したクラスを作成しました。私はまだ起動時にこれがスローされ、私は欠けている明白な何かを見ることができない。ここでカスタムwcfビヘイビア拡張を追加すると、ConfigurationErrorsExceptionが発生します。
System.Configuration.ConfigurationErrorsException: An error occurred creating the configuration section handler for system.serviceModel/behaviors: Extension element TestExtension cannot be added to this element. Verify that the extension is registered in the extension collection at system.serviceModel/extensions/behaviorExtensions.
Parameter name: element (...\MyAssembly.dll.config line 42) --->
System.ArgumentException: Extension element TestExtension cannot be added to this element.
Verify that the extension is registered in the extension collection at system.serviceModel/extensions/behaviorExtensions.
Parameter name: element
は私のApp.configファイルである:ここでは
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name="TestExtension" type="Mynamespace.DependencyInjectionServiceBehavior,MyAssembly,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<TestExtension/>
</behavior>
</serviceBehaviors>
</behaviors>
は私の行動のクラスです:
public class DependencyInjectionServiceBehavior : BehaviorExtensionElement, IServiceBehavior
{
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
foreach (ChannelDispatcherBase cdb in serviceHostBase.ChannelDispatchers)
{
ChannelDispatcher cd = cdb as ChannelDispatcher;
if (cd != null)
{
foreach (EndpointDispatcher ed in cd.Endpoints)
{
ed.DispatchRuntime.InstanceProvider =
new DependencyInjectionInstanceProvider(serviceDescription.ServiceType);
}
}
}
}
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase,
Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
{
}
public override Type BehaviorType
{
get { return this.GetType(); }
}
protected override object CreateBehavior()
{
return new DependencyInjectionServiceBehavior();
}
}
任意の解決策?? – Kiquenet
問題を修正するために私が知る必要があったことはありません - ありがとうございます – stuartd
WCFサービス設定エディタを使用してビヘイビア拡張機能を追加すると、DLLとクラスをブラウズできるようになり、設定ファイルに適切な情報が追加されます。よくいくつかの人々のための少し簡単かもしれないちょうど別の選択肢! –