2015-11-06 4 views
0

У меня только мониторинг работоспособности настроен на моем сайте, чтобы он регистрировал ошибки в базе данных и отправил мне электронное письмо. Однако зарегистрированные ошибки не содержат полную трассировку стека с номером строки, отображающим строку кода, которая вызвала ошибку, - она ​​отображает только метод, в котором была вызвана ошибка, но не номер строки внутри, которая фактически вызвала проблему. Вот пример из сообщения электронной почты:Запись полной трассировки стека (включая номер строки) в ASP.NET Мониторинг работоспособности

** Events ** 
--------------- 
Event code: 3005 
Event message: An unhandled exception has occurred. 
Event time: 11/6/2015 10:38:24 AM 
Event time (UTC): 11/6/2015 10:38:24 AM 
Event ID: xxxx Event sequence: 6 Event occurrence: 1 Event detail code: 0 

Process information: 
    Process ID: 1724 
    Process name: w3wp.exe 
    Account name: IIS APPPOOL\xxxxx 

Exception information: 
    Exception type: System.Exception 
    Exception message: Exception of type 'System.Exception' was thrown. 

Request information: 
    Request URL: xxxxxx 
    Request path: /xxxx.aspx 
    User host address: xxxx 
    User: xxxx 
    Is authenticated: True 
    Authentication Type: Forms 
    Thread account name: IIS APPPOOL\xxxx 

Thread information: 
    Thread ID: 26 
    Thread account name: IIS APPPOOL\xxxx 
    Is impersonating: False 
    Stack trace: at TestPage.Page_Load(Object sender, EventArgs e) 
    at System.Web.UI.Control.OnLoad(EventArgs e) 
    at System.Web.UI.Control.LoadRecursive() 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

Как видно из информационной секции резьбы в нижней части, сообщение только заходит так далеко, чтобы указать, что Page_Load вызвавшего ошибку, но не указывает номер строки, который сделал это. Может ли эта информация быть отправлена ​​с помощью мониторинга состояния здоровья?

Edit: Мой web.config раздел следующим образом:

<!-- Health Monitoring --> 
    <healthMonitoring enabled="true"> 
     <eventMappings> 
     <clear/> 

     <add name="All Errors" type="System.Web.Management.WebBaseErrorEvent" startEventCode="0" endEventCode="2147483647"/> 
     </eventMappings> 

     <providers> 
     <clear/> 
     <add type="System.Web.Management.SimpleMailWebEventProvider" 
      name="EmailWebEventProvider" buffer="false" 
      from="xxx" to="xxx" 
      subjectPrefix="xxxx Website Runtime Error: " /> 

     <add connectionStringName="LocalSqlServer" maxEventDetailsLength="1073741823" 
    buffer="false" name="SqlWebEventProvider" 
    type="System.Web.Management.SqlWebEventProvider" /> 
     </providers> 

     <rules> 
     <clear/> 
     <add name="All Errors To Database" eventName="All Errors" provider="SqlWebEventProvider" 
    profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:00:00" /> 

     <add name="All Errors To E-Mail" eventName="All Errors" provider="EmailWebEventProvider" 
    profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:00:00" /> 
     </rules> 
    </healthMonitoring> 
+0

Вы пробовали какое-либо решение? ИМХО, полезно http://mvolo.com/asp-net-health-monitoring-8-years-later для размышлений о * Мониторинг здоровья *, вы правы, не полезны для ответа на вопрос – Kiquenet

ответ

0

Вам понадобятся PDB файлы наряду с узлами, чтобы получить номера строк, включенных в трассировки стека.