使用ashx Handler显示图像

我的aspx页面中有以下图像

 "  

在我的aspx.cs中,为此图像指定了一个图像

 protected void uploadimage_Click(object sender, System.EventArgs e) { ImageUtils.uploadImage(Titletxt.Text, FileUpload.FileContent); LargeImage.ImageUrl = "~/AvatarImageFetch.ashx?memberid=" + memberid.ToString(); } 

出于某种原因,图像不会显示。 这是我的ashx

  public void ProcessRequest(HttpContext context) { SqlConnection myConnection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["FMMImages"].ConnectionString); myConnection.Open(); string sql = "select largeimage from images_temp where id=@memberid"; SqlCommand cmd = new SqlCommand(sql, myConnection); int param; int.TryParse(context.Request.QueryString["memberid"], out param); cmd.Parameters.Add("@memberid", SqlDbType.Int).Value = param; //cmd.Parameters.Add("@GuID", SqlDbType.UniqueIdentifier).Value = context.Request.QueryString["UID"].ToString(); cmd.CommandType = System.Data.CommandType.Text; SqlDataReader dReader = cmd.ExecuteReader(); dReader.Read(); context.Response.BinaryWrite((byte[])dReader["largeimage"]); dReader.Close(); myConnection.Close(); } 

另外,我在ashx处理程序中有一个断点。 看起来处理程序没有触发。

尝试设置ContentType:

 context.Response.ContentType = "image/png"; 

http://www.dotnetperls.com/ashx

在ProcessRequest方法中尝试以下操作:

 context.Response.ContentType = "image"; using (System.IO.MemoryStream str = new System.IO.MemoryStream(objData.ToArray(), true)) { str.Write(objData.ToArray(), 0, objData.ToArray().Length); Byte[] bytes = str.ToArray(); context.Response.BinaryWrite(bytes); } 

其中objData是您从数据库中读取的值

ImageUrl仅替换控件标记中的波浪号(〜)。

试试这个:

 string imageUrl = "~/AvatarImageFetch.ashx?memberid=" + memberid.ToString(); LargeImage.ImageUrl = Page.ResolveUrl(imageUrl);