0

CookieContainer の逆シリアル化に問題があるようです。正常にシリアル化されますが、逆シリアル化すると、Object reference not set to an instance of an object以下の行でエラーが発生しますcookieJar = (CookieContainer)info.GetValue("cookieJar", cookieJar.GetType());

しかし、新しい Cookie コンテナーを作成する行のコメントを外すと、エラーは発生せず、シリアライズされた CookieContainer はデシリアライズされます。

cookieJar プロパティは MySession クラスのプロパティです。

public MySession(SerializationInfo info, StreamingContext context)
{
    //cookieJar = new CookieContainer()
    cookieJar = (CookieContainer)info.GetValue("cookieJar", cookieJar.GetType());
    email = info.GetString("email");
    password = info.GetString("password");

    client = new HttpClient(new HttpClientHandler() { CookieContainer = cookieJar });
}

public void GetObjectData(SerializationInfo info, StreamingContext context)
{
    info.AddValue("cookieJar", cookieJar);
    info.AddValue("email", email);
    info.AddValue("password", password);
}

どうしてこれなの?

4

1 に答える 1

0

あなたの場合、変数cookieJarは null であるため、呼び出しGetType()の結果はNullReferenceException. 例外を回避するには、コードラインを次のように変更する必要があります。

cookieJar = (CookieContainer)info.GetValue("cookieJar", typeOf(CookieContainer));

于 2013-10-25T09:14:06.180 に答える