2015-01-05 2 views
1

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

C#

public class EmailWebEvents : WebEventProvider { 

    public override void ProcessEvent(WebBaseEvent raisedEvent) { 
     BasicEmail email = new BasicEmail(); 
     email.To = "[email protected]"; 
     email.Subject = "Website Error (" + Environment.MachineName + ")"; 
     email.Body = raisedEvent.Message + "\n\n" + 
        raisedEvent.EventSource.ToString() + "\n\n" + 
        raisedEvent.ToString(); 
     email.Send(); 
    } 

    public override void Shutdown() { 
     // Nothing needed to be done. 
    } 

    public override void Flush() { 
     // Nothing needed to be done. 
    } 
} 

Web Config

<system.web> 
    <healthMonitoring enabled="true" heartbeatInterval="0"> 
     <providers> 
      <clear /> 
      <add name="Custom Email Event Provider" type="MvcRoot.Helpers.EmailWebEvents" /> 
     </providers> 
     <rules> 
      <clear /> 
      <add name="appDevEvents" eventName="All Errors" provider="Custom Email Event Provider" profile="Critical" minInstances="1" maxLimit="Infinite" minInterval="00:01:00" custom="" /> 
     </rules> 
    </healthMonitoring> 
</system.web> 

Как я могу включать данные POST в этих писем?

ответ

1

Использование декомпилятора на System.Web.Management.WebBaseEvent. Когда событие возбуждается, оно делает некоторые прямые ссылки на HttpContext.Current без каких-либо классов обертки или вспомогательных. Затем идет вызов вашего метода ProcessEvent, не закручивая другой поток или любой из статических классов вверх. Таким образом, похоже, что HttpContext.Current является полубезопасным для доступа к вашему методу ProcessEvent.

Я бы посмотрел, если HttpContext.Current.Request.Form содержит значения, которые вы ищете, когда обрабатываете событие. Вероятно, вы захотите обернуть это в несколько нулевых проверок, чтобы убедиться, что контекст действительно существует, прежде чем пытаться вытащить значения формы.