2013-04-08 3 views
1

현재 전자 메일 주소로 제공되는 링크에서 데모 소프트웨어를 다운로드 할 수있는 기능을 제공하는 응용 프로그램을 개발 중입니다. 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("[email protected]"); 
      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("[email protected]", "*****"); 
      smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 
      smtp.Send(mail); 
     } 
    } 
    catch (Exception ex) 
    { 
     ex.ToString(); 
    } 
+3

what lin 당신은 오류를 얻고 있습니까? –

+0

여기에 오류 메시지를 입력 할 수 있습니까? – Habibillah

+0

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

답변

1

Request.QueryString["period"] null 인 경우 ToString()을 호출하면 객체 참조가 객체 예외의 인스턴스로 설정되지 않습니다. ToString를 호출하기 전에 null 참조에 대한

확인 : 해당 매개 변수가 QueryString을에있을 경우

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

그래서 null 값을 채울 수있는 솔루션은 무엇이되어야합니까? –

+0

그것은 쿼리 문자열이므로, 그 값은 당신의 URL에 있어야합니다 :'/index.html? period = whatever'. –

1

확인합니다.

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

DateTime dt1 = Convert.ToDateTime(Request.QueryString["period"].ToString()) 만약 당신이 당신의 쿼리 문자열에 period이없는 의미보다 다음 오류를 던지고있다. 오류가

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

그래서 당신이 다음 null 값에 대한

Request.QueryString["period"].ToString() 

첫 번째 검사에서 null 값을 가질 것을 제안 라인에 언급했듯이

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

을 확인하는 것이 좋습니다 날짜 시간으로 변환

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