Определите, является ли это вызовом rest или WCF в ClientMessageInspector и ServerMessageInspector

#c# #rest #wcf

#c# #rest #wcf

Вопрос:

Все,

У меня есть пара служб WCF и одна служба rest, которая использует ClientMessageInspector и ServerMessageInspector для аутентификации токена. Есть ли какой-либо способ узнать в ClientMessageInspector и ServerMessageInspector, поступает ли запрос из WCF или REST

Что-то вроде в ClientMessageInspector

 public class ClientMessageInspector : IClientMessageInspector {
    public object BeforeSendRequest (ref Message request, IClientChannel channel) {
        if (request header is WCF) {
            // Do Something
        } else if (request header Rest) {
            // Do Something
        }
    }
}
  

Что-то вроде в ServerMessageInspector

 public class ServerMessageInspector : IDispatchMessageInspector {
    public object AfterReceiveRequest (ref Message request, IClientChannel channel, InstanceContext instanceContext) {
        if (request header is WCF) {
            // Do Something
        } else if (request header Rest) {
            // Do Something
        }
    }
}
  

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

1. Добавив точки останова, мы можем обнаружить, что запрос в привязке Web HTTP находится в потоковом режиме. Попробуйте проверить тип запроса. является ли это обходным путем?

2. @AbrahamQian… Спасибо за ответ. не могли бы вы, пожалуйста, предоставить мне образец кода для этого, пожалуйста.

3. @AbrahamQian.. Не могли бы вы, пожалуйста, предоставить пример кода для этого, означает, как проверить привязку запроса в потоковом режиме?.

4. В непотоковом режиме тип запроса — BufferedMessage. Мы можем напрямую распечатать содержимое переменной запроса, но в webhttpbinding тип запроса — это NullMessage, который не может быть выведен напрямую.

5. если (запрос. GetType().Name==»NullMessage») { } else, если (запрос. GetType().Name==»BufferedMessage») { }