扩展 Try Catch 功能 C#

Pet*_*son 3 c# asp.net-mvc logging try-catch

我有一个 MVC 应用程序,我在其中使用 Try-Catch 块,我正在寻找一种简单的方法来实现基于全局布尔字段的活动/错误记录。有谁知道我可以“扩展”Try-Catch 代码的功能以添加我自己的活动/错误日志的方法,而不必经过并触摸每个块?

例如:

我想要尝试将某些项目自动记录到我的数据库中,例如 url、动作、id、参数、IP 信息等,...而 Catch 将它的异常自动记录到数据库中的另一个表中。

想法?推荐?

谢谢,彼得

Pio*_*rak 5

创建您的自定义操作过滤器并用它装饰控制器或操作方法。

http://msdn.microsoft.com/en-us/library/dd381609.aspx

public class LoggingFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.HttpContext.Trace.Write("(Logging Filter)Action Executing: " +
            filterContext.ActionDescriptor.ActionName);

        base.OnActionExecuting(filterContext);
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        if (filterContext.Exception != null)
            filterContext.HttpContext.Trace.Write("(Logging Filter)Exception thrown");

        base.OnActionExecuted(filterContext);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用它

public class HomeController : Controller
{
    [LoggingFilter]
    public ActionResult Index() 
    {//...}
}
Run Code Online (Sandbox Code Playgroud)