Як створити користувальницькі звітування про критичні помилки сторінок ASP.NET за допомогою Visual C#.NET

Переклади статей Переклади статей
Номер статті: 306355 - Показ продуктів, яких стосується ця стаття.
Розгорнути все | Згорнути все

На цій сторінці

ПІДСУМКИ

У цій статті поетапно описано сценарій виконання Visual C#.ЧИСТИЙ код трепінг і відповісти на помилки, коли вони відбуваються в ASP.МЕРЕЖІ. ASP.NET покращилося на Помилка під Вільний час обробки параметрів від традиційних Microsoft щоденно сервер сторінки (ASP). У ASP.NET, ви можете впоратися помилки на кількох різних рівнях, у вашому програми.

Нові можливості в ASP.NET

ASP.МЕРЕЖІ пропонує кілька досягненнями в як ви можете впоратися і реагувати Щоб помилки. У традиційних ASP ви впоратися помилки з «На помилки резюме далі» (або спробувати зловити блоки у JScript). Крім того, якщо ви використовуєте Microsoft Інформаційних служб Інтернету (IIS) 5.0, для створення настроюваних звітування сторінки за допомогою ASPError об'єкт. Однак, ці підходи мають свої обмеження.

ASP.МЕРЕЖІ надає декілька рівнів в що ви можете впоратися і відповісти на помилки, які можуть виникнути під Вільний час запуску сталася ASP.ЧИСТИЙ застосування. ASP.Сітка дає три основних методів, які дозволяють трепінгу та відповісти на помилки, коли вони відбуваються: Page_Error, Application_Errorта файл конфігурації програми (config).

У даній статті описується сценарій виконання цих нових можливостей у вашому ASP.NET застосування. Хоча у цій статті описується, як забезпечити користувацьких сторінок помилок і загальна помилка звітності, що стосується безпосередньо ASP.МЕРЕЖІ, цю статтю не описує інші помилка обробки підходів, таких, як спробувати зловити нарешті блоку і спільної мови виконання (CLR)-винятку системи.

Як використовувати Page_Error метод

обробник подій Page_Error надає спосіб трепінгу помилок, які відбуваються через рівні в рівень сторінки. Просто можна відобразити відомості про помилку (як зразок коду для Наступні робить), або ви можете увійти події або виконувати інші інтерактивні елементи.

Примітка Цей приклад показує докладні відомості про помилки в браузері тільки в демонстраційних цілях. Ви хочете, щоб бути обережними при відображенні детальну інформацію для кінцевих користувачів програми, особливо, коли на додаток працює в Інтернеті. Було б більш відповідну дію відображення протокол IMAP для користувачів, повідомивши їх, що сталася помилка, і потім фактично вхід подробиці конкретну помилку у випадку журналу.

У цьому прикладі кидає null виключення, вимагає помилку відбуваються в Page_Load обробника подій. Виконати такі інтерактивні елементи, щоб створити початковий сторінці, що буде продемонструвати за допомогою Page_Error обробника подій.
  1. Виконайте такі інтерактивні елементи, щоб додати новий файл з ім'ям PageEvent.aspx до проекту:
    1. Відкрити Microsoft Visual Studio.МЕРЕЖІ.
    2. Рішення Internet Explorer клацніть правою кнопкою миші вузол проекту, виберіть пункт Додатиі натисніть кнопку Додати веб-форму.
    3. У полі ім'я введіть PageEvent.aspxа потім натисніть кнопку Відкрити.
  2. Додати наступний код до PageEvent.aspx:
    <script language=C# runat="server">
    void Page_Load(object sender, System.EventArgs e)
    {
    	throw(new ArgumentNullException());
    }
    
    public void Page_Error(object sender,EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"<b>Error Caught in Page_Error event</b><hr><br>" + 
    			"<br><b>Error in: </b>" + Request.Url.ToString() +
    			"<br><b>Error Message: </b>" + objErr.Message.ToString()+
    			"<br><b>Stack Trace:</b><br>" + 
    	                  objErr.StackTrace.ToString();
    	Response.Write(err.ToString());
    	Server.ClearError();
    }
    </script> 
    					

    Примітка У цьому прикладі коду атрибуту AutoEventWireup явно встановлена. Якщо ви явно не призначати використовується значення атрибута AutoEventWireup , на за промовчанням значення так . Якщо ви використовуєте Visual Studio .NET розвивати ваш додатків, веб-форми шаблону код явно встановлює значення атрибута AutoEventWireupпомилкових. Це важлива відмінність між за промовчанням значення, що ASP.ЧИСТИЙ використовується та за промовчанням значення, що Visual Studio.Код ЧИСТИЙ шаблону призначає цей атрибут. Якщо значення атрибута AutoEventWireup установлено помилкові, обробники подій, які були оголошені в регіоні.ASPX-сторінки не вогонь. Це може бути в оману, якщо ви не знаєте про це функціональність.
  3. У меню файл команду Зберегти PageEvent.aspx.
  4. Клацніть сторінку правою кнопкою миші та виберіть команду Переглянути у браузері для запуску на сторінці. протокол IMAP про помилку кинули і повідомив відповідно до вимог Кодексу.
Примітка Ви можете помітити, що код питань заклик до Server.ClearError. Це запобігає помилку продовжує обробник подій Application_Error .

Крім того, ви також повинні взяти до відома атрибут Inherits в директиві @ Сторінки . Якщо Inherits , ви повинні створити проект, перш ніж ви відкрийте сторінку. Якщо ви не побудувати проекту вперше, з'явиться таке протокол IMAP про помилку:
'Project.PageEvent' немає припустимий тип

Як використовувати Application_Error метод

Подібно до обробника подій Page_Error , використайте обробник подій Application_Error пастка помилок, які відбуваються у вашому додатку. Через до сфери застосування широким події ви можете увійти з помилка застосунку інформації або інші рівня додатків помилки, які можуть виникнути.

Зразок для наслідування на основі попереднього зразок коду Page_Error і б звільнили, якщо протокол IMAP про помилку в Page_Load не опинився в обробник подій Page_Error . обробник подій Application_Error , вказані у файлі Global.asax ваш застосування. Для простоти інтерактивні елементи, описані в цьому розділі Створення нової сторінки в який кидати виняток, трепінгу помилка в обробник подій Application_Error Global.asax файлу і написати помилки в запис А подій. Наступні кроки демонструють сценарій виконання методу Application_Error :
  1. Додати новий файл з ім'ям AppEvent.aspx до вашого проект.
  2. Додати наступний код до AppEvent.aspx:
    <script language=C# runat="server">
    	void Page_Load(object sender, System.EventArgs e)
    	{
    		throw(new ArgumentNullException());
    	}
    </script>
    					

    Примітка Інформація, обговорюється в розділі "Page_Error" про AutoEventWireup атрибут застосовується також до цього кроку, зразок коду. Подивитися на інформація в розділі "Page_Error" для більш докладної інформації.
  3. У меню файл команду Зберегти AppEvent.aspx.
  4. запит на додавання обробника події Application_Error для трепінгу протокол IMAP про помилку, файл Global.asax що ви кинути в обробник подій Page_Load AppEvent.aspx сторінки. Зверніть увагу, що вам потрібно додати інший за допомогою заяви для простору імен System.Diagnostics для Global.asax сценарій виконання журналу подій.

    Додати до наступний код у файлі Global.asax:
    using System.Diagnostics;
    
    protected void Application_Error(object sender, EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"Error Caught in Application_Error event\n" +
    			"Error in: " + Request.Url.ToString() +
    			"\nError Message:" + objErr.Message.ToString()+ 
    			"\nStack Trace:" + objErr.StackTrace.ToString();
    	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
    	Server.ClearError();
    	//additional actions...
    } 
    					
  5. Збережіть файл Global.asax.
  6. В Visual Studio .NET, у меню Створити виберіть пункт, побудувати.
  7. Клацніть сторінку правою кнопкою миші та виберіть команду Переглянути у браузері. У цьому випадку сторінка буде порожнім, однак, ви повинні помітити Новини елемента було додано у випадку журналу. Цей приклад робить запис А в журнал застосунку, яка доступна з переглядача подій. Після реєстрація події помилки, які ви, можливо, захочете перенаправлення користувача на інший більш зручним для користувачів Помилка сторінку, або виконувати деякі додаткові інтерактивні елементи, якщо це необхідно.

сценарій виконання файлу web. config

Якщо не називати Server.ClearError або трепінгу помилка в Page_Error або Application_Error обробника подій, помилка обробки базуються на настройках у на <customErrors>секції файлу web. config. У регіоні розділ <customErrors>, укажіть перенаправлення сторінки за промовчанням Помилка сторінку (defaultRedirect), або вказати до певної сторінки, на основі коду помилки HTTP яка зібрані. Цей метод можна використовувати для налаштування помилки протокол IMAP, що на користувач отримує.

Якщо виникає помилка, яка не захоплених в будь-який з у відобразиться попередній рівень у вашій програмі, цієї сторінки. Це розділ демонструє, як змінити файл Global.asax, так що Server.ClearError ніколи не називали. В результаті помилки обробляється в на Файлу web. config, як останній пункт для трепінгу помилку. </customErrors></customErrors>
  1. Відкрийте файл, що Global.asax від попереднього приклад.
  2. Коментарі з Server.ClearError лінії для того, щоб на Web. config, поверхонь помилка файл.
  3. Зберегти зміни до Global.asax. Ваш код повинен тепер вигляд, подібний до такого:
    using System.Diagnostics;
    
    protected void Application_Error(object sender, EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"Error Caught in Application_Error event\n" +
    			"Error in: " + Request.Url.ToString() +
    			"\nError Message:" + objErr.Message.ToString() + 
    			"\nStack Trace:" + objErr.StackTrace.ToString();
    	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
    	//Server.ClearError();
    	//additional actions...
    } 
    					
  4. Додати наступний код до розділу <customErrors> для переспрямування користувачів до власної сторінку:<b00> </b00> </customErrors>
    <customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
    </customErrors>
    						
    Примітка Таким чином, щоб він посилається на відповідні веб-сервер, ви повинні змінити шлях до файлу у defaultRedirect , атрибуту і Застосування імен.
  5. Тому, що надсилаються помилки, які опинилися в пастці на цьому рівні на сторінці помилку за промовчанням потрібно створити сторінка з помилкою, названий ErrorStatus.htm. Майте на увазі, що ви використовуєте цей метод контролювати те, що представляється на користувача, тому цей приклад використовує htm-сторінку на сторінці помилку. Додати наступні код ErrorStatus.htm:
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 7.0">
    </HEAD>
    <BODY>
         <b>Custom Error page!</b>
         <br>
         You have been redirected here from the <customErrors> section of the 
         Web.config file.
    </BODY>
    </HTML>
    					
  6. Щоб перевірити код, зберегти файли, створення проекту, і Переглянути AppEvent.aspx в браузері. Помітити, що коли кинули помилку, Відкриється сторінка ErrorStatus.htm.
Хоча ви можете посилатися на сторінці помилку за промовчанням у значення атрибут defaultRedirect в <customErrors>розділі, ви можете також визначення конкретної сторінка для перенаправлення на основі код помилки HTTP, що є підняли. Цей параметр дозволяє <error>дочірній елемент. Наприклад:<b00> </b00> </error> </customErrors>
<customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
	<error statusCode="404" redirect="filenotfound.htm" />
</customErrors>
				
Примітка Сторінки, вказана в defaultRedirect в <customErrors>розділі є HTM-файл. Я

Зверніть увагу, що <customErrors>розділ включає режим атрибут, який встановлений на. Режим атрибут використовується для контролю, як відбувається помилка переспрямування. Наприклад, якщо застосунок, швидше за все потрібно бачити фактична ASP.ЧИСТИЙ повідомлень про помилки і не хочете, щоб бути перенаправлено на більш зручний для користувача про помилку сторінці. Режим атрибут містить такі параметри: </customErrors></customErrors>
  • На: необроблена виняткова ситуація перенаправлення користувача на вказаний defaultRedirect сторінку. Цей режим використовується головним чином у виробництво.
  • Off: користувачів отримати відомості про винятки та не Перенаправлено на defaultRedirect сторінці. Цей режим використовується в основному в розвитку.
  • RemoteOnly: лише користувачам доступ до сайту, на локальному комп'ютері (за допомогою Localhost) отримувати інформацію-винятку. Всі інші користувачі будуть перенаправлені на на defaultRedirect сторінці. Цей режим використовується в основному для налагодження.

Виправлення неполадок

за промовчанням установки Microsoft Windows 2000 а на Microsoft Windows XP, ASP.NET запускає веб-застосунок код в робочий процес. Відомості про цей процес за промовчанням непривілейованих місцевий рахунок, називається ASPNET рахунок. У бета-версій ASP.NET, був процес ідентифікації Система, потужний управлінського обліку з багатьох адміністратора на комп'ютері.

за промовчанням установки на Windows Server 2003 (IIS 6), ASP.NET запускає веб-застосунок код в робочий процес. Відомості про цей процес за промовчанням обліковий запис А комп'ютера з обмеженою функціональністю під назвою NetworkService.

Для більш інформацію про ці зміни та як він може заборонити запуск коду в цьому статті і іншого коду, які потребують додаткового прав, відвідайте такі веб-сайти:
Версія 1 Безпеки зміни для Microsoft .NET Framework
http://msdn2.Microsoft.com/EN-US/Library/ms994923.aspx

ПОСИЛАННЯ

Для отримання додаткової інформації відвідайте наступні веб Microsoft сайти:
Винятком управління в.NET

HttpServerUtility.ClearError метод

MSDN.Центр розвитку МЕРЕЖІ

Microsoft .NET домашньої сторінки

Властивості

Номер статті: 306355 - Востаннє переглянуто: 13 червня 2012 р. - Редакція: 1.0
ЗАСТОСОВУЄТЬСЯ ДО:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Ключові слова: 
kbconfig kbhowtomaster kbweb kbmt KB306355 KbMtuk
Машинний переклад
УВАГА! Цю статтю переклала програма машинного перекладу Microsoft, а не людина. Корпорація Microsoft пропонує вам як машинні переклади, так і переклади фахівців, щоб Ви мали доступ до всіх статей бази знань рідною мовою. Проте стаття, яку переклав комп’ютер, не завжди бездоганна. Вона може містити лексичні, синтаксичні або граматичні помилки. Так само помиляється іноземець, спілкуючись вашою рідною мовою. Корпорація Microsoft не несе відповідальність за жодні неточності, помилки або шкоду, завдану неправильним перекладом змісту або його використанням з боку користувачів. Крім того, корпорація Microsoft часто оновлює програму машинного перекладу.
Клацніть тут, щоб переглянути цю статтю англійською мовою: 306355

Надіслати відгук

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com