dr是SqlDataReader
photo是数据库中的Image字段
如果某条记录的photo字段不为空,
则(byte[])dr["photo"]转换不会出错
可是如果photo字段为空,就会报“指定的转换无效。”的错误!指定的转换无效。 
说明: 执行当前 Web 请求期间,出现未处理的异常。
请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 指定的转换无效。源错误: 
行 169: this.zipcode = dr["zipcode"].ToString();
行 170: this.phone = dr["phone"].ToString();
行 171: this.photo = (byte[])dr["photo"];
 

解决方案 »

  1.   

      这个当然了,你把空,转换为 byte[]  当然是错的了,你可以先判断一下,是否为空,不为空就转换
      

  2.   

    行 171: if(dr["photo"]!=null)
    行 172: this.photo = (byte[])dr["photo"];
    依然出现上面的错误.... :(
      

  3.   

    if (dr["photo"] != DBNull.Value) {
    this.photo = (byte[])dr["photo"];
    }
    DBNull.Value != null
      

  4.   

    if (obj.getMember().Rows.Count > 0)  //这里要做判断,如是记录为空,即不会执行下面的语句.
    {
    DataRow dr = obj.getMember().Rows[0];
    this.zipcode   =   dr["zipcode"].ToString(); 
    this.phone   =   dr["phone"].ToString(); 
    //...
    }另我,我不知你这个this.Phone是什么?如是byte[]类型的,即可. byte[] buffer = (byte[])dr["Photo"];
     Response.BinaryWrite(buffer);