как получить сообщение об ошибке компилятора? asp.net - PullRequest
1 голос
/ 14 декабря 2009

как я могу получить сообщение об ошибке компилятора, если есть pageUrl.

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

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

альтернативный текст http://content.screencast.com/users/Telman/folders/Jing/media/c8f358e3-0d95-4c1a-9dae-c98e2dec4456/2009-12-14_1854.png

спасибо

Ответы [ 5 ]

1 голос
/ 14 декабря 2009

Вы можете перехватить все ошибки приложения в глобальном классе приложения (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
        }

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

1 голос
/ 14 декабря 2009
string pagetext = (new System.Net.WebClient()).DownLoadString(<url>);

//Add a better control here
if(pagetext.Contains("Server Error"))
{
     `enter code here`
 }
0 голосов
/ 14 декабря 2009

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

Во внешнем приложении, используя запрос 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 выдаст вам сообщения типа:

Удаленный сервер возвратил ошибку: (500) Внутренняя ошибка сервера.

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

0 голосов
/ 14 декабря 2009

Отказ от ответственности: я очень мало делаю с вещами типа ASP.NET.

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

0 голосов
/ 14 декабря 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...