Как мне создать изображение 404? для изображений, которые не могут быть прочитаны ASP.NET - PullRequest
1 голос
/ 24 января 2010

Использование ASP.NET C # для визуальных студий для размещения файлов / страниц. Я разрешаю пользователям загружать изображения и перенаправлять их на медиа-страницу. Изображения находятся в определенном пути, легко узнаваемом с помощью регулярных выражений. Когда я перенаправляю, я получаю 1 из 2 ошибок. 1) Изображение не существует (не было создано) или 2) Невозможно открыть файл (imagemagik или что-то записывающее изображение).

Когда я получаю эти ошибки, как мне остановить ошибку 404 или другую ошибку и показать «обработку» или недоступное в настоящее время изображение заполнителя?

Ответы [ 3 ]

2 голосов
/ 25 января 2010
    protected void Application_Error(Object sender, EventArgs e)
    {
        var ex = Server.GetLastError();
        var exx = ex as HttpException;
        HttpContext ctx = HttpContext.Current;
        var url = MyCode.CleanPath(ctx);
        if (MyCode.SomeRegexPattern.IsMatch(url))
        {
            var code = ctx.Response.StatusCode;
            if (exx != null)
                ctx.Response.StatusCode = exx.GetHttpCode();
            else if (ex.Message.IndexOf("cannot access the file") != -1)
                ctx.Response.StatusCode = 500;
            ctx.Response.ContentType = "image/gif";
            Server.Transfer("path/to/processing.gif");
        }
    }
0 голосов
/ 25 января 2010

С теоретической точки зрения, не могли бы вы реализовать собственный обработчик HTTP, основанный на вашем пути, подобно тому, что подробно описано здесь: http://support.microsoft.com/kb/308001

Реализуйте логику, чтобы определить, существует ли запрашиваемый файл и может ли он быть прочитан в обработчике. Если нет, то программно сгенерируйте желаемый результат вместо 404.

0 голосов
/ 24 января 2010

Ну, 404 - это правильный код ответа, но вы можете установить собственный обработчик для него в папке с изображениями, чтобы вместо этого возвращать фиктивное изображение.

РЕДАКТИРОВАТЬ: Чтобы настроить пользовательский обработчик в диспетчере IIS, перейдите на сайт и перейдите на страницы ошибок.

...