Следующая разметка выведет изображение правильно. Однако у вас все еще есть проблема с именем файла, на которое ссылаются в URL.
<img src="<%= Url.Action("OuputCaptchaImage", "Home", new { imageName = "1" })%>" />
Что бы вывести следующий HTML:
<img src="/Home/OuputCaptchaImage?imageName=1" />
Вы можете указать какое-то другое значение в качестве параметра, например перечисление, а не имя изображения, а затем изменить свою логику, чтобы она возвращала правильный файл.
Однако (AFAIK) для вывода изображения с несуществующим именем файла потребуется обработчик Http, чтобы перехватить запрос и записать требуемое изображение в поток ответа.
Редактировать
Вот пример использования HttpHandler для перехвата входящего запроса на «captcha1.gif» и потоковой передачи другого изображения в ответ:
Разметка
<img src="Images/captcha1.gif" />
HttpHandler
public class OuputCaptchaImageHandler : IHttpHandler
{
public bool IsReusable
{
get
{
return false;
}
}
public void ProcessRequest(HttpContext context)
{
string imagePath =
context.Server.MapPath(@"~\Images\1.gif");
Bitmap bitmap = new Bitmap(imagePath);
context.Response.ContentType = "image/gif";
bitmap.Save(context.Response.OutputStream, ImageFormat.Gif);
bitmap.Dispose();
}
}
Web.Config
<httpHandlers>
<add verb="*" path="Images/captcha1.gif" type="FullyQualifiedNameSpace.OuputCaptchaImageHandler, RootNamespace" validate="false"></add>
</httpHandlers>
Global.asax.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("Images/captcha1.gif/{*pathInfo}");
....
Надеюсь, это поможет.