健康監視內建事件無法涵蓋所有業務場景。本文示範建立自定義事件類別,記錄「已鎖定用戶嘗試登入」並透過 Email 通知管理員。
WebBaseEvent:public class LockedOutUserLoginAttemptEvent : WebAuditEvent {
public LockedOutUserLoginAttemptEvent(string msg, object source, int eventCode, string username)
: base(msg, source, eventCode) { UserName = username; }
public string UserName { get; private set; }
public override void FormatCustomEventDetails(WebEventFormatter formatter) {
base.FormatCustomEventDetails(formatter);
formatter.AppendLine("嘗試登入的鎖定用戶: " + UserName);
}
}
MembershipUser.IsLockedOut,若真則 new LockedOutUserLoginAttemptEvent(...).Raise()。<healthMonitoring enabled="true">
<eventMappings>
<add name="LockedOutLogin" type="Namespace.LockedOutUserLoginAttemptEvent" />
</eventMappings>
<providers>
<add name="EmailProvider" type="System.Web.Management.SimpleMailWebEventProvider"
from="admin@site.com" to="alert@site.com" subjectPrefix="安全警示" />
</providers>
<rules>
<add name="Notify LockedOut" eventName="LockedOutLogin" provider="EmailProvider" />
</rules>
</healthMonitoring>
參考前文 Membership 鎖定機制與解鎖介面實作,構建完整安全審計閉環。