Вот код, который я использовал для создания и создания своего пользовательского веб-события.
обновленный пример кода:
Dim errorText As String = "Doing Something"
Try
'Do Something
Catch ex As Exception
Dim ErrorDescr As String = String.Format("There was a problem {0}", errorText)
DataActionError.Text = ErrorDescr
DataActionError.Visible = True
Dim ErrorEvent As CustomWebEvents.HandeledExceptionWebAuditEvent = _
New CustomWebEvents.HandeledExceptionWebAuditEvent(ErrorDescr , Ex)
ErrorEvent.Raise()
End Try
Код класса HandeledExceptionWebAuditEvent (Примечание, Я должен был поставить этов отдельной сборке, чтобы сделать эту работу .):
using System;
using System.Web.Management;
namespace CustomWebEvents
{
public class HandeledExceptionWebAuditEvent : WebAuditEvent
{
private Exception _ex;
public HandeledExceptionWebAuditEvent(string msg, Exception ex)
: base(msg, ex.Source, WebEventCodes.WebExtendedBase + 1)
{
_ex = ex;
}
public override void FormatCustomEventDetails(WebEventFormatter formatter )
{
base.FormatCustomEventDetails(formatter);
formatter.AppendLine("Activity Description: Handeled Exception");
formatter.AppendLine("Message:" + base.Message);
formatter.AppendLine("Exception Message:" + _ex.Message);
formatter.AppendLine("Exception StackTrace:" + _ex.StackTrace);
}
}
}
Обновлен раздел healthMonitoring моего web.config:
<healthMonitoring enabled="true">
<eventMappings>
<clear />
<add name="All Errors"
type="System.Web.Management.WebBaseErrorEvent"
startEventCode="0"
endEventCode="2147483647" />
<add name="Handeled Exception"
type="CustomWebEvents.HandeledExceptionWebAuditEvent, CustomWebEvents"
/>
</eventMappings>
<providers>
<clear />
<add connectionStringName="MyConnectionString"
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="Handeled Exception To Database"
eventName="Handeled Exception"
provider="SqlWebEventProvider"
profile="Default"
minInstances="1" maxLimit="Infinite"
minInterval="00:00:00" />
</rules>
</healthMonitoring>