Обработчик Ashx не может быть использован через <asp:Image> элемент управления

StackOverflow https://stackoverflow.com/questions/655299

  •  19-08-2019
  •  | 
  •  

Вопрос

В приложении ASP.NET 3.5 я создал обработчик ashx, как показано ниже:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Web.Services;

namespace TestWebConfig
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class Handler1 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "image/jpg";
            BinaryReader br = new BinaryReader(File.Open( @"d:\Temp\images\AutumnLeaves.jpg", FileMode.Open ));

            int bufferLength = 1000;

            do
            {
                byte[] buffer = br.ReadBytes(bufferLength);
                context.Response.OutputStream.Write(buffer, 0, buffer.Length);
                if (buffer.Length < bufferLength)
                {
                    break;
                }
            } while (true);
            br.Close();
        }

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

На странице aspx, если я укажу:

<img alt="alt2" src="Handler1.ashx" style="border-width:0px"/>

затем веб-страница загружается в браузер вместе с изображением.С другой стороны, если я использую:

<asp:Image ID="Image2" runat="server" />

и в коде-за:

protected void Page_Load(object sender, EventArgs e)
{
   Image2.ImageUrl = "Handler1.asxh";
}

тогда элемент управления Image2 не загружает изображение, хотя связанный html-код выглядит одинаково.Отображается только текст alt.Что случилось?

Спасибо

Это было полезно?

Решение

Во-первых, в вашей Page_Load похоже, что вы указали ей неправильное расширение, но я не думаю, что проблема в этом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top