我已经安装并使用了 Microsoft.Web.RedisSessionStateProvider 一段时间,在查看了 OutputCaching 之后,我还想安装 Microsoft.Web.RedisOutputCacheProvider,但是它们都有 Microsoft.Web.Redis.ISerializer 接口,这会破坏我的 JsonCacheSerializer,因为它使用 ISerializer界面。
我在 VS 2017 中遇到错误,内容为...
" Microsoft.Web.RedisOutputCacheProvider 和 Microsoft.Web.RedisSessionStateProvider 中都存在类型 'ISerializer' "
我用于 SessionState 的 JsonCacheSerializer 代码是:
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);
}
}
这是否意味着一个人必须使用一个或另一个,而不是两者?