Я установил и использовал Microsoft.Web.RedisSessionStateProvider некоторое время, и после просмотра OutputCaching я подумал об установке также Microsoft.Web.RedisOutputCacheProvider, но у них обоих есть интерфейс Microsoft.Web.Redis.ISerializer, который нарушает работу моего JsonCacheSerializer.использует интерфейс ISerializer.
В VS 2017 появляется сообщение об ошибке:
" Тип« ISerializer »существует как в Microsoft.Web.RedisOutputCacheProvider, так и в Microsoft.Web.RedisSessionStateProvider"
Код JsonCacheSerializer, который я использую для SessionState:
public class JsonCacheSerializer : Microsoft.Web.Redis.ISerializer
{
private static readonly JsonSerializerSettings Settings = new JsonSerializerSettings()
{
TypeNameHandling = TypeNameHandling.All,
ReferenceLoopHandling = ReferenceLoopHandling.Serialize,
PreserveReferencesHandling = PreserveReferencesHandling.Objects,
Error = (serializer, err) => {
err.ErrorContext.Handled = true;
}
};
public byte[] Serialize(object data)
{
return Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(data, Settings));
}
public object Deserialize(byte[] data)
{
return data == null ? null : JsonConvert.DeserializeObject(Encoding.UTF8.GetString(data), Settings);
}
}
Значит ли это, что нужно использовать один или другой, а не оба?