画像を取得する際に問題なく動作する次のコードがありますが、画像が以前の画像が他のすべての画像に読み込まれていることを意味するかどうかが明確でない場合があり、これが発生した場合、特定のオブジェクトの適切な画像が読み込まれません。
ハンドラーのコード:
public void ProcessRequest(HttpContext context)
{
string ID;
if (context.Request.QueryString["id"] != null)
{
ID = Convert.ToString(context.Request.QueryString["id"]);
}
else
{
throw new NotImplementedException();
}
context.Response.ContentType = "image/jpeg";
//context.Response.Buffer = false;
Stream strm = ShowEmpImage(ID);
//byte[] buffer = new byte[4096];
byte[] buffer = new byte[4095];
int byteSeq = strm.Read(buffer, 0, buffer.Length);
while ((byteSeq > 0))
{
context.Response.OutputStream.Write(buffer, 0, byteSeq);
//context.Response.OutputStream.Write(buffer, 0, byteSeq);
byteSeq = strm.Read(buffer, 0, 4095);
}
context.Response.Flush();
}
private Stream ShowEmpImage(string ID)
{
DB_Connection();
string sql = "SELECT Visitor_Image FROM Visitor_Master WHERE Visitor_Id = '" + ID + "'";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.CommandType = CommandType.Text;
Object img = cmd.ExecuteScalar();
try
{
return new MemoryStream((byte[])img);
}
catch
{
return null;
}
finally
{
con.Close();
}
}