2009-12-14 4 views
1

как я могу получить сообщение об ошибке компилятора, если есть страница url.как получить сообщение об ошибке компилятора? asp.net

Я пробовал использовать класс HttpWebRequest, но пока не получил результата.

Проблема в том, что у меня есть коллекция страниц, которые должны выполняться автоматически. и если страница терпит неудачу, создайте журнал.

alt text http://content.screencast.com/users/Telman/folders/Jing/media/c8f358e3-0d95-4c1a-9dae-c98e2dec4456/2009-12-14_1854.png

спасибо

+0

Где вы пытаетесь зафиксировать и зарегистрировать эти ошибки? На сервере по мере сбоя страниц или во внешнем приложении, которое посещает страницы и обслуживается ошибка? –

ответ

0

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

Если вы не хотите писать свою собственную программу для обнаружения ошибок, исходящих из HTTP-запросов, вы можете использовать инфраструктуру тестирования, такую ​​как selenium.

+0

так, как я могу узнать, что страница терпит неудачу или нет? а не http-ошибки. – loviji

+0

если я не могу получить компилятор, как я могу знать одно - страница терпит неудачу или нет с .net? – loviji

+0

отредактировал мое сообщение, не забудьте принять ответ и проголосовать за сообщение, если оно решает вашу проблему. –

0

Отказ от ответственности: Я очень мало отношусь к материалам типа ASP.NET.

ELMAH может вам помочь. Это журнал ошибок для проектов ASP.NET.

1
string pagetext = (new System.Net.WebClient()).DownLoadString(<url>); 

//Add a better control here 
if(pagetext.Contains("Server Error")) 
{ 
    `enter code here` 
} 
1

Вы можете поймать все ошибки приложения в приложения мирового класса (global.asax) в Application_Error обработчиком.

Другой способ. Вы можете перехватывать исключения в пользовательском модуле ошибок, а также, просто зарегистрировать вас модуль в <httpModules> секции и реализовать следующие функции есть:

void context_Error(object sender, EventArgs e) 
     { 
     HttpApplication application = (HttpApplication)sender; 
     HttpContext context = application.Context; 

     Exception ex = context.Server.GetLastError(); 
     //... here goes some code 
     } 

Таким образом, вы должны способов поймать любую ошибку. Другая задача - запросить все страницы. Как я вижу из вашего поста, у вас уже есть такое решение.

+0

Вы правы, но мой лог-аппликация - служба, WinApplication. Я не могу реализовать global.asax – loviji

+0

Где вы хотите поймать исключения? В приложении удаленного выигрыша, которое вызывает веб-сервер или сам веб-сервер? – terR0Q

0

Где вы пытаетесь поймать эти исключения? На вашем веб-сайте или во внешнем приложении, которое сканирует сайт?

В качестве внешнего приложения, используя HttpWebRequest вы могли бы сделать что-то вроде этого:

string urlToTry = "http://www.example.com/ServerErrorPage.htm"; 

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlToTry); 

try 
{ 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

    // Process your success response. 
} 
catch (WebException we) 
{ 
    HttpWebResponse error = (HttpWebResponse)we.Response; 

    // If you want to log multiple codes, prefer a switch statement. 
    if (error.StatusCode == HttpStatusCode.InternalServerError) 
    { 
    // This is your 500 internal server error, perform logging. 
    } 
} 

WebException класс даст вам сообщения, как:

The remote server returned an error: (500) Internal Server Error.

После того, как вы бросили их в HttpWebResponse , вы можете получить на StatusCode и выполнить все необходимые записи.

+0

Я думаю, вы решаете еще одну проблему, а не мою. – loviji

+0

. Ну, вы упомянули, используя HttpWebRequest, и ваш вопрос немного расплывчато на * где * вы пытаетесь зарегистрировать эти ошибки - когда вы вызываете страницу из другого места с помощью HttpWebRequest , или на сервере, когда запрашивается страница? –

Смежные вопросы