Uso de iParameterInspector.Beforecall (OperationNombre de la cadena, Objeto [] Entradas) Para abortar una llamada

StackOverflow https://stackoverflow.com/questions/5486563

  •  14-11-2019
  •  | 
  •  

Pregunta

Tengo un comportamiento personalizado en el que implemento "iParameterInspector" para poder usar antes y después de Call.Actualmente estoy usando estos métodos para realizar algunas verificaciones antes de que la llamada se ejecute en mi servicio WCF.

Aquí está mi atributo:

[AttributeUsage(AttributeTargets.Class)]
public class SendReceiveBehaviorAttribute : Attribute, IServiceBehavior
{
    public SendReceiveBehaviorAttribute()
    {
    }

    public void ApplyDispatchBehavior(ServiceDescription desc, ServiceHostBase host)
    {
        foreach (ChannelDispatcher cDispatcher in host.ChannelDispatchers)
        {
            foreach (EndpointDispatcher eDispatcher in cDispatcher.Endpoints)
            {
                foreach (DispatchOperation op in eDispatcher.DispatchRuntime.Operations)
                {
                    op.ParameterInspectors.Add(MyInspector);
                }
            }
        }
    }

    public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
    {
    }

    public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
    {
    }
}

y mi inspector:

internal class MyInspector: IParameterInspector
{
    public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
    {
    }

    public object BeforeCall(string operationName, object[] inputs)
    {
        // Make some verifications and cancel if it fails.

        return null;
    }
}

editar ¿Cuál sería la mejor manera de abortar mi llamada si mi verificación falla?

¿Fue útil?

Solución

La excepción de lanzamiento es la única manera, por lo que soy consciente, para abortar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top