Я использую общий обработчик для загрузки изображения из баз данных. Его работа прекрасна, когда я жестко кодирую ImageID
в строке запроса при вызове обработчика. Но он дает ошибку другого типа, когда я динамически передаю значение из строки запроса (из datatable):Ошибка при загрузке изображения из базы данных
ExecuteReader требует открытого и доступного соединения. Текущее состояние соединения открыто.
ИЛИ
Недопустимая операция. Соединение закрыто.
Вот код обработчика
public void ProcessRequest(HttpContext context)
{
Int64 id = Convert.ToInt64(context.Request.QueryString["adid"]);
dt = GetRecpDetailsByID(id);
if (dt.Rows.Count > 0)
{
//context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite((byte[])dt.Rows[0][2]);
}
}
public DataTable GetRecpDetailsByID(Int64 reid)
{
try
{
obj_DB.Open();
obj_sqlcmd = new SqlCommand("GetRecpDetailsByID", obj_DB.GetDBConnection());
obj_sqlcmd.CommandType = CommandType.StoredProcedure;
obj_sqlcmd.Parameters.Add(new SqlParameter("@rid", reid));
obj_sqlda = new SqlDataAdapter();
obj_dt = new DataTable();
obj_sqlda.SelectCommand = obj_sqlcmd;
obj_sqlda.Fill(obj_dt);
return obj_dt;
}
finally
{
obj_DB.Close();
}
}
А вот HTML и код на стороне сервера на ASPX странице обработчика вызовов
<img id="img2" alt="Image" runat="server" src='<%#"ImageReqHAndler.ashx?adid="+Eval("Reid")%>' width="179" height="148" />
Спасибо, Усман. В моем классе подключения есть проблема. – user3326837