2009-05-25 9 views

Antwort

3

Sie benötigen einen custom service host zu bauen, dann stellen Sie Ihre SVC-Datei, es zu benutzen. Auf dem benutzerdefinierten Service-Host können Sie vor dem Start alles tun, was Sie möchten, einschließlich Verhaltensweisen. Da Sie Betriebsverhalten verwenden möchten, sollten Sie dies in der OnOpening() -Methode tun - da die Service Factory das Betriebsverhalten zurücksetzt, nachdem das Endpunktverhalten konfiguriert wurde. Sie können die Endpunkte und die Operationen in OnOpening durchlaufen.

8

Sie es als Attribut anhängen könnte:

public class CustomInspectorAttribute : Attribute, IOperationBehavior, IParameterInspector 
{ 
    #region IOperationBehavior Members 

    public void AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters) 
    { 
    } 

    public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation) 
    { 
     // Attribute could be used on client side 
     clientOperation.ParameterInspectors.Add(this); 
    } 

    public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation) 
    { 
     // Attribute could be used on server side 
     dispatchOperation.ParameterInspectors.Add(this); 
    } 

    public void Validate(OperationDescription operationDescription) 
    { 
    } 

    #endregion 




    #region IParameterInspector Members 

    public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState) 
    { 
     // Do something with returned values from operation 
    } 

    public object BeforeCall(string operationName, object[] inputs) 
    { 
     // Do something with incoming parameters before invoking actual operation 
     return null; 
    } 

    #endregion 
} 

und befestigen Sie das Attribut auf eine Operation

[ServiceContract] 
public interface ICustomServiceContract 
{ 
    [CustomInspector] 
    [OperationContract] 
    void MyOperation(); 
} 
+0

Titel sagt: ‚programmatisch‘, ist es offensichtlich, dass das Wort verschiedene Dinge für Sie bedeutet und Ich –

+0

Dies ist bei weitem die bessere Antwort. Vielen Dank. – ROFLwTIME

Verwandte Themen