Я знаю, что для всех операций в этой службе потребуется одно и то же OperationBehavior. Могу ли я реализовать ServiceBehavior, который будет выполнять те же функции до запуска операции?Могу ли я создать ServiceBehavior, которое заменит OperationBehaviors, которое я уже применил к каждой операции в моей службе?
я в настоящее время:
[ServiceContract]
public interface IService
{
[AuthTokenValidation]
[OperationContract]
string DoThis(string authtoken);
}
Я хочу, чтобы заменить его:
[AuthTokenValidation]
[ServiceContract]
public interface IService
{
[OperationContract]
string DoThis(string authtoken);
}
Внутри моего атрибута AuthTokenValidation, у меня есть следующий код в методе ApplyDispatchBehavior:
public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
{
AuthTokenInspector inspector;
inspector = new AuthTokenInspector(AuthTokenIndex);
dispatchOperation.ParameterInspectors.Add(inspector);
}
Я проверил метод ApplyDispatchBehavior в IServiceBehavior, но я не мог определить ou t как получить доступ к вызову DisppatchOperation, который в настоящее время вызывается.
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
{
//Can I reach the OperationDispatch from in here??
}
Является ли это правильный способ использовать ServiceBehavior или я должен просто быть удовлетворен OperationBehaviors реализовать эту функцию?
Если все операции должны реализовывать то же поведение, почему бы вам не заботиться о том, какая операция вызывается в методе «ApplyDispatchBehavior»? –
В приложении ApplyDispatchBehavior я добавляю IParameterInspector для отправкиОперации.ParameterInspectors – djmc