I think I've just spotted the problem...
cmd.Parameters.AddWithValue("@name", SqlDbType.VarChar).Value = filename;
cmd.Parameters.AddWithValue("@contenttype", SqlDbType.VarChar).Value = contenttype;
cmd.Parameters.AddWithValue("@data", SqlDbType.VarChar).Value = bytes;
You've mixed up
Parameters.Add
and
Parameters.AddWithValue
Either use
cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = filename;
cmd.Parameters.Add("@contenttype", SqlDbType.VarChar).Value = contenttype;
cmd.Parameters.Add("@data", SqlDbType.VarChar).Value = bytes;
or better...
cmd.Parameters.AddWithValue("@name", filename);
cmd.Parameters.AddWithValue("@contenttype", contenttype);
cmd.Parameters.AddWithValue("@data", bytes);