0

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);
    }
}

これは、両方ではなく、どちらか一方を使用する必要があるということですか?

4

1 に答える 1