请大家耐心看我的问题,先谢谢了!开发环境:WinXp sp2+VS2003.net(C#)+SqlServer2000错误日志:
2004-11-30 18:26:39System.NullReferenceException: 未将对象引用设置到对象的实例。
   at UDS.Components.MailClass.SaveExtMail(Message JMsg, String Username, String Email, String MessageID) in e:\wwwroot\uds\components\mail.cs:line 595
   at UDS.Components.MailClass.ReceiveMails(String Username, Int32 OrderID) in e:\wwwroot\uds\components\mail.cs:line 646
   at UDS.SubModule.UnitiveDocument.Mail.MailList.btnBeginReceive_Click(Object sender, EventArgs e) in e:\wwwroot\uds\submodule\unitivedocument\mail\index.aspx.cs:line 415相关代码:
mail.cs
Database data = new Database();
595: SqlParameter[] prams = { data.MakeInParam("@MailID",    SqlDbType.NVarChar , 100, MessageID), data.MakeInParam("@Username",  SqlDbType.NVarChar, 300, Username), data.MakeInParam("@Email",     SqlDbType.NVarChar, 100,Email),
      data.MakeInParam("@ReadFlag",  SqlDbType.Bit,1, 0), data.MakeInParam("@FolderID",  SqlDbType.Int, 20, 1),
data.MakeInParam("@HeadersText",  SqlDbType.NVarChar, 1000, JMsg.Headers .ToString()), data.MakeInParam("@Subject",   SqlDbType.NVarChar, 100, JMsg.Subject.ToString()),
      data.MakeInParam("@TextContent",  SqlDbType.NVarChar , 3000, JMsg.Text.ToString()),
data.MakeInParam("@HtmlContent",  SqlDbType.NVarChar, 3000, JMsg.HTMLBody.ToString()), data.MakeInParam("@FromName",  SqlDbType.NVarChar, 300, JMsg.FromName.ToString()),
data.MakeInParam("@FromEmail", SqlDbType.NVarChar, 200, ""), data.MakeInParam("@CcTo",      SqlDbType.NVarChar, 200,""), data.MakeInParam("@BccTo",     SqlDbType.NVarChar, 200, ""), data.MakeInParam("@Replyto",   SqlDbType.NVarChar, 200, ""), data.MakeInParam("@SendDate",  SqlDbType.DateTime, 30, DateTime.Parse(JMsg.Date.ToString())),
data.MakeInParam("@BodySize",  SqlDbType.NVarChar , 20, ""),
data.MakeInParam("@Size",      SqlDbType.Int, 5,12)    };
        ......
for(int i=1;i<=jpop.Count;i++)
{
             Msg = jpop.Messages[i];
646:     this.SaveExtMail(Msg,Username,dataReader["Email"].ToString(),jpop.GetMessageUID(i));
         }
jpop.Disconnect();index.aspx.cs
MailClass mail = new MailClass();
string Username = Request.Cookies["Username"].Value.ToString();
int OrderID = Int32.Parse(this.listExtMail.SelectedItem.Value.ToString());
try
{
415: mail.ReceiveMails(Username,OrderID);
Response.Write("<script language=javascript>alert('接收完成!');</script>");
}

解决方案 »

  1.   

    是有一个 null 字段没有处理, 你加断点调试一下不就知道哪里错了
      

  2.   

    我在上面646行处加了断点,下面是运行错误提示,但是我看不懂     MsPickupdirectory <错误: 发生 {System.Runtime.InteropServices.COMException} 类型的异常> string
    PGPEncrypt <错误: 发生 {System.Runtime.InteropServices.COMException} 类型的异常> bool
    PGPPassphrase <错误: 发生 {System.Runtime.InteropServices.COMException} 类型的异常> string
    PGPSign <错误: 发生 {System.Runtime.InteropServices.COMException} 类型的异常> bool
    PGPSignkey <错误: 发生 {System.Runtime.InteropServices.COMException} 类型的异常> string
      

  3.   

    我在595行加断点的结果是: prams <未定义的值> System.Data.SqlClient.SqlParameter[]
    你知道是什么原因了吗?
      

  4.   

    先谢谢你了!
    能不能说详细点?我是初学.net,不太懂
      

  5.   

    我把要写入的参数改成常量后运行可以通过,也就是这个保存函数可以向数据库里写入内容
    data.MakeInParam("@MailID",       SqlDbType.NVarChar, 100,   MessageID),    data.MakeInParam("@Username",     SqlDbType.NVarChar, 300,   Username),
    data.MakeInParam("@Email",        SqlDbType.NVarChar, 100,   Email),
    data.MakeInParam("@ReadFlag",     SqlDbType.Bit,      1,     0),
    data.MakeInParam("@FolderID",     SqlDbType.Int,      20,    1),
    data.MakeInParam("@HeadersText",  SqlDbType.NVarChar, 1000,  Username),
    data.MakeInParam("@Subject",      SqlDbType.NVarChar, 100,   Username),
    data.MakeInParam("@TextContent",  SqlDbType.NVarChar, 3000,  Username),
    data.MakeInParam("@HtmlContent",  SqlDbType.NVarChar, 3000,  Username),
    data.MakeInParam("@FromName",     SqlDbType.NVarChar, 300,   Username),
    data.MakeInParam("@FromEmail",    SqlDbType.NVarChar, 200,   ""),
    data.MakeInParam("@CcTo",         SqlDbType.NVarChar, 200,   ""),
    data.MakeInParam("@BccTo",        SqlDbType.NVarChar, 200,   ""),
    data.MakeInParam("@Replyto",      SqlDbType.NVarChar, 200,   ""),
    data.MakeInParam("@SendDate",     SqlDbType.DateTime, 30,    "2004-05-14"),
    data.MakeInParam("@BodySize",     SqlDbType.NVarChar, 20,    ""),
    data.MakeInParam("@Size",         SqlDbType.Int,      5,     12)
      

  6.   

    哪位能说明一下出现这种错误提示的原因是什么吗?通俗一点的
    System.NullReferenceException: 未将对象引用设置到对象的实例。
      

  7.   

    比方说JMsg.FromName更本没有,那么你用JMsg.FromName.ToString()就会出现这个错误,你把几个换成常量试试看,逐步缩小出错范围。
      

  8.   

    的确是这样的,变量追踪的时候我发现JMsg.HTMLBody为null,现在可以读些邮件了,感谢你!
    能把你加为好友吗?我的QQ:363641852,多多指教!