comment puis-je ajouter IOperationBehavior par programme lors de l'exécution sur iis? pas sur l'hôte wcf personnalisé.où est le bon endroit pour ajouter IOperationBehavior par programme
grâce
Ali TAKAVCI
comment puis-je ajouter IOperationBehavior par programme lors de l'exécution sur iis? pas sur l'hôte wcf personnalisé.où est le bon endroit pour ajouter IOperationBehavior par programme
grâce
Ali TAKAVCI
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.
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();
}
titre dit « programme », il est évident que le mot signifie différentes choses pour vous et moi –
C'est de loin la meilleure réponse. Merci. – ROFLwTIME