Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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# 是否可以在IIS中编写全局HttpModule并记录SQL_C#_Sql Server_Httpmodule - Fatal编程技术网

C# 是否可以在IIS中编写全局HttpModule并记录SQL

C# 是否可以在IIS中编写全局HttpModule并记录SQL,c#,sql-server,httpmodule,C#,Sql Server,Httpmodule,是否可以在IIS中写入全局HttpModule并记录所有运行的.NET应用程序的所有SQL请求?如果是,我应该从哪里开始 我见过一些这样做的工具。他们的工具记录所有SQL,不需要我在我的应用程序中添加任何特殊代码。事实上,它会记录所有应用程序的信息。如果要记录SQL请求,您需要以下之一: 用于所有SQL请求的自定义数据层类,可以记录每次调用。例如,使用调用SQLCommand.ExecuteQuery的方法创建一个类SQLHelper,然后获取传入的查询并记录它。然后,您必须严格遵守规则,确保每

是否可以在IIS中写入全局HttpModule并记录所有运行的.NET应用程序的所有SQL请求?如果是,我应该从哪里开始


我见过一些这样做的工具。他们的工具记录所有SQL,不需要我在我的应用程序中添加任何特殊代码。事实上,它会记录所有应用程序的信息。

如果要记录SQL请求,您需要以下之一:

  • 用于所有SQL请求的自定义数据层类,可以记录每次调用。例如,使用调用
    SQLCommand.ExecuteQuery
    的方法创建一个类
    SQLHelper
    ,然后获取传入的查询并记录它。然后,您必须严格遵守规则,确保每个SQL调用都通过帮助器类进行路由
  • 使用像LINQ To SQL或Entity framework这样的框架,该框架内置了日志记录工具,例如通过
    DataContext.Log
    属性
  • 使用具有适当设置的SQL Server Profiler来捕获SQL请求的跟踪,这些请求可以转储到文件或表中以供以后处理

  • 您无法从.Net全局HTTP模块捕获所有标准ADO.Net SQL请求,因为您不知道或无法访问当前正在执行的所有连接和命令。

    @Jamey:事实上,它属于第3类。它是一个windows服务,可能使用跟踪来捕获SQL请求,但这种情况发生在SQL Server中,而不是在.NET中。如果您自己在数据库上设置跟踪,您可以让它永远运行,如我所说,登录到文件或表中,并且可以使用.NET代码处理数据,例如显示结果。但是您不能纯粹从.NET HttpModule捕获SQL查询。@Jamey:参见此处示例:。您可以在5分钟内轻松完成此操作,然后您将拥有所需的所有数据。干杯:)