反序列化CookieContainer的问题 - 未将对象引用设置为对象的实例

时间:2013-10-25 09:07:03

标签: c# serialization

我似乎遇到了反序列化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);
}

为什么会这样?

1 个答案:

答案 0 :(得分:1)

我认为变量cookieJar在您的情况下为空,因此调用GetType()将导致NullReferenceException。您应该将代码行更改为以下内容以避免异常。

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