Как отладить ошибки компиляции ASP.NET? - PullRequest
2 голосов
/ 23 июня 2009

У меня большой, сложный веб-сайт, в основном написанный другими людьми. Я сделал некоторые изменения, и теперь, когда я пытаюсь получить доступ к любой странице на сайте (не только там, где находятся мои изменения), я получаю сообщение об ошибке, описанное ниже. Хотя я хотел бы знать, как решить эту проблему, я еще больше хотел бы знать общие диагностические шаги, которые я должен предпринять, чтобы отследить проблему - я бы хотел сам решить ее , Заранее спасибо за помощь!

При переходе браузера на любую страницу сайта я получаю сообщение об ошибке сервера:

Parser Error
Parser Error Message: Object reference not set to an instance of an object.
Source Error: [No relevant source lines]

Я проверил журнал событий на сервере и получил немного более подробную информацию:

Event code: 3006 
Event message: A parser error has occurred. 

Exception information: 
Exception type: HttpException 
Exception message: Object reference not set to an instance of an object. 

Stack trace:
at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()
at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters)

1 Ответ

5 голосов
/ 23 июня 2009

1) В исходной ошибке не отображаются строки или номера строк, поэтому убедитесь, что вы выполняете отладочную сборку. Также убедитесь, что в вашем файле web.config есть файл.

2) Проверьте ваш файл global.asax ... что-то там не так. У вас есть исключение нулевой ссылки, и это, вероятно, происходит в любом коде, который вы изменили в global.asax.cs.

EDIT : для отладки файла global.asax.cs часто проще всего вызвать вызов System.Diagnostics.Debugger.Launch () в обработчике события Session_Start. Добавьте обработчик, если у вас его нет.

3) Убедитесь, что ASP.NET установлен правильно. В свойствах вашего виртуального каталога в IIS есть вкладка с именем ASP.NET. Проверьте версию. Если он установлен неправильно, запустите "C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis -i".

4) Если вы используете VS, перейдите в CTRL-ALT-E (или в меню «Отладка / Исключения») и выберите опцию Брошенный для Общих исключений времени исполнения, поэтому VS будет прерываться всякий раз, когда выдается исключение CLR, тогда вы можно точно увидеть, где это происходит. Запустите приложение в отладчике и узнайте, что происходит.

5) Если исключение выдается за пределы вашего кода, проверьте трассировку стека, чтобы выяснить, откуда оно.

6) Если вам нужно пойти гораздо глубже, и вы знаете, что это происходит в .NET, но не знаете почему, включите пошаговое выполнение исходного кода .NET Framework (это где-то в Options / Debug если вы используете VS2008 SP1) , Если вы используете более раннюю версию, вам придется посмотреть, как включить символы .NET Framework и т. Д. Однако делать это не нужно, просто добавив ее в качестве «следующего шага».

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