以下代碼將ParameterInspector添加到端點。將C#WCF擴展性代碼移到配置文件
ChannelFactory<ITest> factory = new ChannelFactory<ITest>("BasicHttpBinding_ITest");
OperationProfilerManager clientProfilerManager = new OperationProfilerManager();
factory.Endpoint.Behaviors.Add(new OperationProfilerEndpointBehavior(clientProfilerManager));
ITest proxy = factory.CreateChannel();
作爲一個很好的做法,我們正在嘗試所有這些代碼移動到Web.config中。所以像這樣的
ChannelFactory<ITest> factory = new ChannelFactory<ITest>("BasicHttpBinding_ITest");
或這,僅僅建立工廠 -
ChannelFactory<ITest> factory = new ChannelFactory<ITest>();
應取從配置的擴展元素。通過以下配置,BeforeCall或AfterCall方法IParameterInspector未被觸發。您能否指出我們在以下Web.config中的錯誤 -
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ITest" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://n1:8000/Service" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ITest" contract="ServiceReference1.ITest"
name="BasicHttpBinding_ITest" />
</client>
<behaviors>
<endpointBehaviors>
<behavior name="todo">
</behavior>
</endpointBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<add name="OperationProfilerEndpointBehavior" type="SelfHostedServiceClient.OperationProfilerEndpointBehavior, SelfHostedServiceClient"/>
</behaviorExtensions>
</extensions>
</system.serviceModel>
謝謝您的幫助。
參考:Carlos blog
編輯:分辨率
基於卡洛斯回答,我把下面的步驟來解決問題。
第1步。創建的OperationProfilerBehaviorElement類派生自BehaviorExtensionElement。該類負責實例實施IEndpointBehavior
class OperationProfilerBehaviorElement : BehaviorExtensionElement {
public override Type BehaviorType
{
get {
return typeof(OperationProfilerEndpointBehavior);
}
}
protected override object CreateBehavior()
{
OperationProfilerManager clientProfilerManager = new OperationProfilerManager();
return new OperationProfilerEndpointBehavior(clientProfilerManager);
} }
步驟2.類這個類必須在Web.config中下面的時候宣佈,
<extensions>
<behaviorExtensions>
<add name="OperationProfilerBehavior" type="SelfHostedServiceClient.OperationProfilerBehaviorElement, SelfHostedServiceClient"/>
</behaviorExtensions>
</extensions>
第3步:添加端點行爲如下,
<behaviors>
<endpointBehaviors>
<behavior name="**InspectParameters**">
<OperationProfilerBehavior/>
</behavior>
</endpointBehaviors>
</behaviors>
第4步。設置behaviorConfiguration端點等於如下InspectParameters的屬性,
<endpoint address="http://localhost:8000/Service" behaviorConfiguration="InspectParameters"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITest"
contract="ServiceReference1.ITest" name="BasicHttpBinding_ITest" />
現在我能夠在一個單一的C#線和參數檢查員初始化工廠默認情況下從Web.config中
加入ChannelFactory factory = new ChannelFactory(「BasicHttpBinding_ITest」);
嗨,卡洛斯,你可以請這個問題的幫助。 HTTP://計算器。COM /問題/ 13224182 /限制訪問到一個-數據成員,上爲數不多的端點 – Abhijeet