У меня есть собственный класс обработчика ошибок:
namespace AccountCenterUserControls
{
public class EWHErrorModule : IHttpModule
{
public void Init(HttpApplication app)
{
app.Error += new System.EventHandler(OnError);
}
public void OnError(object obj, EventArgs args)
{
Page myPage = (System.Web.UI.Page)HttpContext.Current.Handler;
ctx.Server.ClearError();
}
public void Dispose() { }
}
}
Я создал этот обработчик ошибок в своем файле web.config следующим образом:
<httpModules>
<!-- EWH Custom Error Handler -->
<add type="AccountCenterUserControls.EWHErrorModule" name="EWHErrorModule"/>
</httpModules>
Он хорошо ловит ошибки. Мой вопрос заключается в том, как я могу использовать мастер-страницу для своих заблокированных страниц с ошибками? Я могу перейти к отдельным мастер-страницам со своей страницы, но я не совсем уверен, как установить заполнитель содержимого, когда я нахожусь в этом глубоком.
1 ответ
В ASP.NET событие ошибки приложения может быть вызвано в любой момент жизненного цикла страницы, когда вы можете выполнять обработчик ошибок в то время, когда изменение страницы совершенно незаконно. Если это допустимо, вы можете получить ссылку на элемент, который хотите изменить или заменить, используя FindControl. Опять же, если время является допустимым, вы можете изменить коллекцию элементов управления элемента управления или добавить или удалить элементы управления из коллекции элементов управления, чтобы добиться возможного желаемого рендеринга.
Я надеюсь, что мои предположения о вашей ситуации верны. Если они верны, мне было интересно, почему вы просто не реализуете Application_Error в Global.asax/.cs? Это будет автоматически связано с событием OnError приложения ASP.NET. Внутри этого обработчика у вас будут ссылки, доступные для запроса, ответа и сеанса.
Кроме того, вы должны знать, что HttpContext.Current.Handler может и будет возвращать значение null на определенных этапах жизненного цикла. Например, ошибка произошла до того, как запрос был передан обработчику, как во время запроса аутентификации.
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.