Мне нужно реализовать пользовательское кэширование клиентского прокси сервиса wcf.
Я реализовал интерфейс IOperationBehavior. На стороне сервера мы можем установить свойство OperationDescription.Invoke в методе ApplyDispatchBehavior и реализовать интерфейс IOperationInvoker для управления выполнением операции. На стороне клиента мы не можем этого сделать.
На стороне клиента мы можем использовать интерфейсы IClientMessageInspector, IParameterInspector, IClientMessageFormatter для управления потоком сообщений. Основная проблема заключается в том, что я должен хранить в кэше только ответ службы без информации о формате сообщения. Когда я восстанавливаю значения из кеша, я должен снова создать сообщение, как в случае ответа службы. Я не могу прервать следующую внутреннюю обработку сообщений. Поэтому в этот момент я теряю необходимую информацию о сообщении, такую как кодировка, тип контента (json, xml) в случае RESTful-сервисов. Конечный результат - WCF не может обработать такое сообщение.
Я хочу отключить обработку сообщений, если существует кэшированное значение. Как я могу это сделать?