2009-05-25 5 views

Répondre

3

Vous devez construire un custom service host, puis définissez votre fichier .svc pour l'utiliser. Dans l'hôte de service personnalisé, vous pouvez faire ce que vous voulez au service avant qu'il ne commence, y compris définir des comportements. Étant donné que vous souhaitez utiliser les comportements d'opération, vous devez le faire dans la méthode OnOpening() - lorsque la fabrique de services s'applique réinitialise les comportements d'opération après la configuration des comportements de point de terminaison. Vous serez en mesure de parcourir les points de terminaison et les opérations dans OnOpening.

8

Vous pouvez l'attacher comme un attribut:

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 
} 

Et attacher l'attribut à une opération

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

titre dit « programme », il est évident que le mot signifie différentes choses pour vous et moi –

+0

C'est de loin la meilleure réponse. Merci. – ROFLwTIME

Questions connexes