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

本文关键字:设置 对象 实例 对象引用 CookieContainer 问题 反序列化 | 更新日期: 2023-09-27 18:36:54

我似乎在反序列化 CookieContainer 时遇到了问题。它序列化得很好,但是当我反序列化时,我在 cookieJar = (CookieContainer)info.GetValue("cookieJar", cookieJar.GetType()); 下方的这一行收到错误Object reference not set to an instance of an object

但是,如果我取消注释创建新 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);
}

这是为什么呢?

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

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

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