Похоже, вам нужно настроить HttpHandler, который будет создавать измененный размер изображения и, возможно, также кэшировать его на диск, чтобы избежать необходимости воссоздавать миниатюру при каждом запросе.
Так, например:
<asp:ImageButton ID="ImageButton1" ImageUrl="~/ImageHandler.ashx?ImageId=123" runat="server />
Тогда у вас будет обработчик:
namespace MyProject
{
public class ImageHandler : IHttpHandler
{
public virtual void ProcessRequest(HttpContext context)
{
// 1. Get querystring parameter
// 2. Check if resized image is in cache
// 3. If not, create it and cache to disk
// 5. Send the image
// Example Below
// -------------
// Get ID from querystring
string id = context.Request.QueryString.Get("ImageId");
// Construct path to cached thumbnail file
string path = context.Server.MapPath("~/ImageCache/" + id + ".jpg");
// Create the file if it doesn't exist already
if (!File.Exists(path))
CreateThumbnailImage(id);
// Set content-type, content-length, etc headers
// Send the file
Response.TransmitFile(path);
}
public virtual bool IsReusable
{
get { return true; }
}
}
}
Вам также нужно настроить это в web.config
<system.web>
<httpHandlers>
<add verb="*" path="ImageHandler.ashx" type="MyProject.ImageHandler, MyProject"/>
</httpHandlers>
</system.web>
Этого должно быть достаточно, чтобы вы начали. Вам нужно будет изменить метод ProcessRequest для создания эскиза, но вы уже упоминали, что позаботились об этом. Вам также необходимо убедиться, что вы правильно установили заголовки при передаче файла в браузер.