asp.net 通用处理程序第一次没有发送图像

asp.net generic handler not sending images for the first time

我在 ASP.Net 中创建了一个通用处理程序 (.ashx) 以从数据库加载图像并将其发送到浏览器。

我正在使用颜色框在单独的页面中显示它,该页面只有一个图像控件并通过 ImageUrl 属性 调用此处理程序。

第一次,图片没有显示在彩框中。对于后续请求,将显示图像。 我尝试调试发现对于后续请求,浏览器没有使用往返,而是从缓存中显示。

如何让它也第一次显示?

   public class DocumentViewer : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            string querystring = context.Request.QueryString.ToString();


            try
            {
                if (querystring != null && querystring.Trim().Length == 0)
                {
                    context.Response.ContentType = "text/plain";
                    context.Response.Write("Error");
                    context.Response.Write("No");
                    return;
                }
                string DocCode = querystring; 

                DocumentInfoBL bl = new DocumentInfoBL();
                DataTable dt = bl.GetDocumentInfo(DocCode);
                if (dt.Rows.Count == 0)
                {

                    context.Response.ContentType = "text/plain";
                    context.Response.Write("Error");
                    context.Response.Write("No");
                    return;
                }
                context.Response.Clear();
                context.Response.ClearContent();
                context.Response.ClearHeaders();
                context.Response.Cache.SetCacheability(HttpCacheability.Public);
                context.Response.Cache.SetExpires(DateTime.MinValue);

              //  context.Response.ContentType = "application/octet-stream";
                context.Response.ContentType = MimeMapping.GetMimeMapping(System.IO.Path.GetFileName(dt.Rows[0]["DocumentFileName"].ToString()));
                context.Response.AddHeader("content-disposition", "inline; filename=" + System.IO.Path.GetFileName(dt.Rows[0]["DocumentFileName"].ToString()));
                context.Response.BinaryWrite((Byte[])dt.Rows[0]["DocumentFile"]);
                context.Response.Buffer = false;

                context.Response.Flush();

            }
            catch (Exception ex)
            {               
                context.Response.ContentType = "text/plain";
                context.Response.Write("Error");
                context.Response.Write("No");
                return;
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

works.It 是字符集或缓冲区的代码。

 public void ProcessRequest(HttpContext context)
        {
            string querystring = context.Request.QueryString.ToString();


            try
            {
                if (querystring != null && querystring.Trim().Length == 0)
                {
                    context.Response.ContentType = "text/plain";
                    context.Response.Write("Error");
                    context.Response.Write("No");
                    return;
                }
                string DocCode = querystring;

                DocumentInfoBL bl = new DocumentInfoBL();
                DataTable dt = bl.GetDocumentInfo(DocCode);
                if (dt.Rows.Count == 0)
                {

                    context.Response.ContentType = "text/plain";
                    context.Response.Write("Error");
                    context.Response.Write("No");
                    return;
                }
                context.Response.Clear();
                context.Response.ClearContent();
                context.Response.ClearHeaders();
                context.Response.Cache.SetCacheability(HttpCacheability.Public);
                context.Response.Cache.SetExpires(DateTime.MinValue);

                context.Response.ContentType = MimeMapping.GetMimeMapping(System.IO.Path.GetFileName(dt.Rows[0]["DocumentFileName"].ToString()));
                context.Response.AddHeader("content-disposition", "inline; filename=" + System.IO.Path.GetFileName(dt.Rows[0]["DocumentFileName"].ToString()));
                context.Response.Buffer = true;
                context.Response.Charset = "";


                context.Response.BinaryWrite((Byte[])dt.Rows[0]["DocumentFile"]);


                context.Response.Flush();

            }
            catch (Exception ex)
            {
//Manage here
                context.Response.ContentType = "text/plain";
                context.Response.Write("Error");
                context.Response.Write("No");
                return;
            }
            context.Response.End();
        }