WCF — получить связанный ServiceContract в ServiceAuthorizationManager

#c# #.net #wcf #service #authorization

#c# #.net #wcf #Обслуживание #авторизация

Вопрос:

Я пытаюсь реализовать пользовательский ServiceAuthorizationManager. В моем ServiceContract у меня есть пользовательский атрибут для каждого метода, называемый ‘Authorization’, где у меня есть флаг, требуется ли авторизация или нет.

Что я хочу сделать, так это из моего ServiceAuthorizationManager получить связанный ServiceContract для текущего запроса, проверить атрибут для конечной точки, к которой обращается, затем просто вернуть true, если авторизация не требуется.

Каков наилучший способ получить к этому доступ? Как только я получу его, я могу легко использовать отражение для получения моей информации об авторизации.

Спасибо за помощь.

Ответ №1:

Ну, один из способов — выполнить действие следующим образом:

 string action = operationContext.RequestContext.RequestMessage.Headers.Action;
  

Действие выполняется в формате:

 ServiceNamespace/ContractName/OperationName
  

Если вы планируете использовать отражение для получения интерфейса и проверки его пользовательских атрибутов, это должно быть все, что вам нужно.

Комментарии:

1. Спасибо, это должно сработать. Я надеялся на что-то более простое, но я воспользуюсь тем, что смогу получить.