Я генерирую изображение штрих-кода как ответ от обработчика HTTP, например:
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.ContentType = "image/Jpeg";
MemoryStream ms = new MemoryStream();
Bitmap objBitmap = GenerateBarcode(context.Request.Params["Code"]);
objBitmap.Save(ms, ImageFormat.Jpeg);
context.Response.BinaryWrite(ms.GetBuffer());
}
Я захожу на http://www.MyWebsite.com/MyProject/BarCode.aspx?code=12345678, и он прекрасно работает. Точно так же я наклеиваю <img alt="" src="http://www.MyWebsite.com/MyProject/BarCode.aspx?code=12345678">
на мою веб-страницу, и она прекрасно работает. Но я прикрепляю тот же тег изображения в электронном письме в формате HTML, и он не отображается (по крайней мере, не в MS Outlook 2007; я еще не тестировал другие почтовые клиенты).
Полагаю, это как-то связано с тем, что я использую обработчик HTTP, поскольку другие статические изображения в электронном письме отображаются нормально. Как я могу это исправить, чтобы изображение появилось? (Я не могу просто использовать статическое изображение, потому что код определяется во время отправки электронного письма.)
Обновление:
Оказывается, я не заметил ключевой детали. Изображение не просто не появляется; скорее атрибут image src заменяется на "http://portal.mxlogic.com/images/transparent.gif".. Я определил, что использование расширений .aspx или .ashx вызывает эту замену (или, возможно, любое расширение, кроме ожидаемого для изображений, таких как .gif или .jpg), и что включение строки запроса в URL также вызывает это, даже когда это стандартное расширение изображения. Я предполагаю, что это какая-то чрезмерная функция безопасности. Поэтому включение изображения, такого как BarCode.aspx? code = 12345678, просто не является ' не собираюсь на работу.
Мне приходит в голову, что я могу сделать что-то вроде <img alt="" src="http://www.MyWebsite.com/MyProject/12345678/BarCode.jpg">
, а затем создать обработчик для всех файлов с именем BarCode.jpg. Здесь 12345678 / не является реальным путем, но это не имеет значения, так как я перенаправляю запрос в обработчик, и я мог бы убрать значение кода из этого фальшивого пути в URL. Но мне, вероятно, придется изменить некоторые настройки IIS, чтобы запросы на файлы .jpg обрабатывались ASP.NET, и я все же хотел бы убедиться, что другие JPEG, помимо моего BarCode.jpg, загружаются нормально .
Честно говоря, я не уверен, стоит ли это хлопот.