0

我正在使用asp.net mvc 附带的内置表单身份验证。我使用 aspnet_regsql 向导将所有必要的表添加到 Sql Server 中,并且我将它们全部集成并完美运行。现在我可以添加用户、登录、执行控制授权和所有这些事情。

下一步是在用户执行操作时添加一些基本日志。例如,我想记录谁使用 UserAdministration 从数据库中删除了用户,或者何时有人访问了具有受限信息的视图(这些只是示例)。

我已经看到,身份验证附带了一个名为 aspnetWebEventEvents 的表,但似乎它仅用于存储网站上发生的异常,并且使用 web.config 进行了配置,并且全部自动执行。我只想调用一个类来记录自定义操作,而不必手动填写所有字段:

Logger.Log("Action performed");

并自动存储用户、时间和所有这些字段。

我确信必须有一个已经实现的类来做这些事情,我不想重写它已经完成的东西。

我尝试使用 SqlWebEventProvider,它似乎是在内部调用的,但这个类似乎是内部的,所以它不打算使用。

也许我错了,这不是为了记录自定义操作,我应该更好地使用自定义操作创建自己的表......

4

1 回答 1

0

我不知道你是否能做到这一点aspnetWebEventEvents,听起来你想记录特定的情况,我认为这不是这个内置功能的意图。

您是否尝试过 ActionFilters?,您可以使用它进行真正特定的日志记录,例如,您可以检查结果类型以查看用户尝试使用该操作时发生了什么,并且您可以通过以下方式访问 RouteData 值ActionExecutedContext

public class LogActionFilter : ActionFilterAttribute 
    {
        public override void  OnActionExecuted(ActionExecutedContext filterContext)
        {

            if (filterContext.Exception != null)
            {
                //Log - Exception Cases
            }
            else if(filterContext.Result.GetType() == typeof(RedirectToRouteResult))
            {
                //Log - Redirect to other Action
            }
           else 
            {
                //Log the normal behavior 
            }
        }

   }

然后您只需使用此属性装饰要记录的操作:

[LogActionFilter]
public ActionResult Edit(int id)
{
}
于 2009-12-10T16:17:39.037 回答