Обработка исключений в файле HttpHandler ASHX - PullRequest
3 голосов
/ 11 ноября 2009

Я использую ASHX-файл для динамического создания изображений.
Я добавил строку кода, чтобы сгенерировать исключение в моем файле Ashx. если я перехожу к файлу ashx напрямую, мой application_error в global.asax работает нормально, чтобы обработать ошибку.

моя проблема в том, что application_Error не работает, когда я использую этот обработчик на другой странице. как в show.aspx, если я поставлю:

<img src="image.ashx" />

не было бы ошибок, просто пустое изображение. Я даже попробовал собственный httpmodule для обработки ошибок, но не повезло. так как я могу отловить ошибки в файле Ashx?

Обновление: , чтобы сделать вещи более понятными, для ловли исключений, я имею в виду 2 варианта.
Во-первых, перенаправить пользователя на другую страницу, если по ЛЮБОЙ причине генерация изображения идет не так.
во-вторых, нужно заменить изображение моим статическим png-файлом снова, если по какой-либо причине возникли ошибки в файле ashx.
Вот почему я думал, что использование httpapplication.error поможет. мой httpmodule похож на:

Public Sub Init(ByVal context As System.Web.HttpApplication) Implements system.Web.IHttpModule.Init
    AddHandler context.Error, AddressOf OnError
End Sub

Private Sub OnError(ByVal sender As Object, ByVal e As EventArgs)
    Dim app As HttpApplication = CType(sender, HttpApplication)
End Sub

Так как мне добиться этого в OnError?

Ответы [ 2 ]

2 голосов
/ 11 ноября 2009

Я полагаю, что исключение выдается как ожидалось. Однако теперь сведения об исключении служат данными для вашего image, который будет отображать «испорченное» изображение. Я бы предложил создать другое статичное изображение, если в обработчике есть ошибка, и записать ее во внешний текстовый файл или другой источник данных.

0 голосов
/ 11 ноября 2009

Вы можете добавить блок catch как обычно, а в случае ошибки вы можете отобразить другое изображение по умолчанию.

...