错误:对象引用未设置为对象的实例

本文关键字:对象 实例 设置 对象引用 错误 | 更新日期: 2023-09-27 18:07:55

我目前正在开发一个应用程序,将给用户的能力下载演示软件从我们提供的链接在他的电子邮件地址。24小时后,现在我已经通过他邮箱地址显示的链接完成了,他可以下载,但是在这个链接的编码中禁用了。我得到错误,我的代码是…

protected void btn_sub_Click(object sender, EventArgs e)
{        
    cn.Open();
    objInquiry.Name = txt_name.Text.ToString().Trim();
    objInquiry.MobileNo = txtMobileNo.Text.ToString().Trim();
    objInquiry.EmailId = txt_eid.Text.ToString().Trim();
    objInquiry.InquiryFor = "Agriculture Product Marketing comity System".ToString().Trim();
    objInquiry.Message = txt_msg.Text.ToString().Trim();
    using (DataSet ds = objInquiry.InsertInquiry())
    {
        Msg.Visible = true;
        Msg.Text = "Thank U For Inquiry We Will Send Demo Link To Your Email Please Check Your Email Regularly";
    }
    try
    {
        DateTime dt1 = Convert.ToDateTime(Request.QueryString["period"].ToString());
        DateTime dt2 = DateTime.Now;
        TimeSpan ts = dt2 - dt1;
        if (ts.TotalMinutes > 5)
        {
            Response.Write("Download time is over");
        }
        else
        {
            MailMessage mail = new MailMessage();
            mail.From = new MailAddress("abc@gmail.com");
            mail.To.Add(txt_eid.Text);
            mail.Subject = txtInquiryFor.Text;
            mail.IsBodyHtml = true;
            mail.Body = "Welcome Mr." + txt_name.Text + "<br><br>";
            mail.Body += "To ShreeHans Webnology" + "<br><br>";
            mail.Body += "Thank u for putting inquiry for" + txtInquiryFor.Text + "<br><br>";
            mail.Body += "Please Click on Following Link To Download Your Demo" + "<br><br>";
            mail.Body += "<a href='"http://www.test.co.in/ConatctUs.aspx?period=" + DateTime.Now + "''">Download Demo Software</a>";
            SmtpClient smtp = new SmtpClient();
            smtp.Host = "smtp.gmail.com";
            smtp.Port = 587;
            smtp.EnableSsl = true;
            smtp.Credentials = new System.Net.NetworkCredential("abc@gmail.com", "*****");
            smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
            smtp.Send(mail);
        }
    }
    catch (Exception ex)
    {
        ex.ToString();
    }

错误:对象引用未设置为对象的实例

正如您所提到的,错误在

DateTime dt1 = Convert.ToDateTime(Request.QueryString["period"].ToString());

也就是说

中有空值
Request.QueryString["period"].ToString()

首先检查空值,然后将其转换为日期时间

if(Request.QueryString["period"]!=null)
{
    DateTime dt1 = Convert.ToDateTime(Request.QueryString["period"].ToString());
}

可能Request.QueryString["period"]是空的,所以在它上调用ToString()时,您将获得对象引用不设置为对象异常的实例。

在调用ToString:

之前检查null引用
var period = Request.QueryString["period"];
if (period != null) {
    DateTime dt1 = Convert.ToDateTime(period.ToString());
}

检查QueryString中是否存在该参数

TimeSpan ts;
if(null != Request.QueryString["period"])
{
  DateTime dt1 = Convert.ToDateTime(Request.QueryString["period"].ToString());
  DateTime dt2 = DateTime.Now;
  TimeSpan ts = dt2 - dt1;
}

如果DateTime dt1 = Convert.ToDateTime(Request.QueryString["period"].ToString())抛出错误,那么意味着您在查询字符串中没有period。最好检查

if(Request.QueryString["period"]!=null)
{
  DateTime dt1 = Convert.ToDateTime(Request.QueryString["period"].ToString());
 . .
 . .
}