Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跟踪ASP.net数据访问应用程序中的用户操作_C#_Asp.net_Sql - Fatal编程技术网

C# 跟踪ASP.net数据访问应用程序中的用户操作

C# 跟踪ASP.net数据访问应用程序中的用户操作,c#,asp.net,sql,C#,Asp.net,Sql,我需要使用登录到我的ASP.net应用程序的用户的用户名作为日志中的标识符来记录每个用户对数据库执行的操作 最简单的方法是什么 我想对于我的数据访问层的每个方法调用,我都需要记录该调用的参数和用户名,然后调用一个新的日志事件方法,将调用的详细信息写入表中 我在正确的轨道上吗?在我工作的地方,我们正在数据库层进行日志记录。每当用户执行insert、update、delete操作时,都会触发一个触发器,并记录带有相应字段的操作,用于历史记录和审核。可能不是最好的方法,但它可以工作。有三个明显的选择:

我需要使用登录到我的ASP.net应用程序的用户的用户名作为日志中的标识符来记录每个用户对数据库执行的操作

最简单的方法是什么

我想对于我的数据访问层的每个方法调用,我都需要记录该调用的参数和用户名,然后调用一个新的日志事件方法,将调用的详细信息写入表中


我在正确的轨道上吗?

在我工作的地方,我们正在数据库层进行日志记录。每当用户执行insert、update、delete操作时,都会触发一个触发器,并记录带有相应字段的操作,用于历史记录和审核。可能不是最好的方法,但它可以工作。

有三个明显的选择:使用触发器、使用SQL从DAL登录或使用log4net从DAL登录

使用触发器

如果您使用的是触发器,请向每个表中添加一个LastUser列,并使所述列成为必需的,即不为NULL,并带有一个检查约束,以确保它不是空字符串。您需要触发器中代码可用的LastUser列,以便记录谁做了什么。你不用说你在用什么数据库系统;有些不支持触发器或不支持SELECT触发器是否需要记录正在运行的SELECT语句

使用SQL从DAL记录日志

如果您是从DAL登录到数据库,那么希望所有调用都通过一些核心代码。如果是这样,那么您可以在代码的这一部分添加您的单一日志记录方法。请记住,您需要在事务中包装对数据库的所有调用,以确保日志和实际数据不会不同步

使用Log4Net从DAL记录日志


您可以同样轻松地设置log4net来记录所有数据访问。Log4net能够将日志条目记录到日志文件中,也可以记录到数据库中。将log4net添加到现有代码很容易,配置也相对容易。

我对表的特定列也做了同样的事情。你可以读一些关于触发器的内容。这里有两个链接,您可以用来阅读一些关于它们的信息。我必须同意Flaktron的观点——如果您只需要记录数据库交互,那么使用SQL触发器是最可靠的审计跟踪方法。Imho:只有当1每个用户都使用自己的用户名连接到数据库时,或者2每个插入、更新或删除都包含一个用户名作为sql语句的一部分时,这才有效。对于web应用程序,所有web应用程序用户帐户都通过单个数据库用户帐户访问数据库,触发器可能不是最简单的选择。