Что вы подразумеваете под редиректом?.Write () будет записывать в поток ответов напрямую.
В catch вы просто создадите экземпляр класса WebImage с изображением по умолчанию и .Write () его.Это будет отображаться так же, как код внутри блока try.
Вот пример кода в терминах MVC.Для полноты я попытался передать содержимое байта.Надеюсь, что это может помочь -
public ActionResult GetPic()
{
int? w = 500;
int? h = 500;
FileStreamResult fsr = null;
MemoryStream ms = null;
try
{
if (w > 200) { w = 200; }
if (h > 200) { h = 200; }
WebImage wi = new WebImage(@"C:\Temp\MyPic.JPG");
if (h.HasValue)
{
Single ratio = (Single)wi.Width / (Single)wi.Height;
h = (int)Math.Ceiling(wi.Width / ratio);
var imageData = wi.Resize(w.Value + 1, h.Value + 1, true, true)
.Crop(1, 1)
.Write().GetBytes();
fsr = new FileStreamResult(ms, "jpg");
}
}
catch
{
byte[] imageData = new WebImage(@"C:\Temp\Star.JPG").GetBytes();
ms = new MemoryStream(imageData);
fsr = new FileStreamResult(ms, "jpg");
}
return fsr;
}
Дело в том, что большинство методов, доступных в WebImage, возвращают экземпляр типа WebImage.Таким образом, вы всегда можете воспользоваться этой гибкостью.