Microsoft.Web.RedisSessionStateProvider をしばらくインストールして使用しましたが、OutputCaching を見た後、Microsoft.Web.RedisOutputCacheProvider もインストールすることを考えましたが、どちらも Microsoft.Web.Redis.ISerializer インターフェイスを持っており、ISerializer を使用しているため、JsonCacheSerializer が壊れます。インターフェース。
VS 2017 で次のようなエラーが表示されます...
"タイプ 'ISerializer' は、Microsoft.Web.RedisOutputCacheProvider と Microsoft.Web.RedisSessionStateProvider の両方に存在します"
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);
}
}
これは、両方ではなく、どちらか一方を使用する必要があるということですか?