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 回答