Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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)_C#_Asp.net_.net_Iis - Fatal编程技术网

在远程进程中运行C#代码(例如IIS)

在远程进程中运行C#代码(例如IIS),c#,asp.net,.net,iis,C#,Asp.net,.net,Iis,我的一些网站在生产环境中工作不好,有时崩溃,有时异常。 由于这些网站确实很旧,有些网站没有足够的日志进行故障排除。 我知道我可以一个接一个地添加代码以获得足够的日志,但这是一个巨大的工作负载,可能会影响现有的逻辑 所以我想做的是: 不修改任何现有产品代码, 我们可以在运行时将代码附加或注入到网站进程中,然后我可以执行一些代码来记录异常、http请求和http响应。 我的环境是Asp.net 4.0+和IIS7+ 如果我可以在产品流程中执行我的代码,那么在不修改产品代码的情况下登录会容易得多,代码

我的一些网站在生产环境中工作不好,有时崩溃,有时异常。 由于这些网站确实很旧,有些网站没有足够的日志进行故障排除。 我知道我可以一个接一个地添加代码以获得足够的日志,但这是一个巨大的工作负载,可能会影响现有的逻辑

所以我想做的是: 不修改任何现有产品代码, 我们可以在运行时将代码附加或注入到网站进程中,然后我可以执行一些代码来记录异常、http请求和http响应。 我的环境是Asp.net 4.0+和IIS7+

如果我可以在产品流程中执行我的代码,那么在不修改产品代码的情况下登录会容易得多,代码如下所示:

 AppDomain.CurrentDomain.FirstChanceException += (sender, e) =>
            {
                ///write log...
            };
unhandle exception是其中一种情况,我还有几个其他情况要应用于所有生产,如:

  • 记录所有请求和响应(我可以启用和禁用登录 随时,从远程管理系统)
  • 日志未处理异常
  • 日志吞没异常
  • 大便
  • 一旦达到条件(如异常计数、, 超时、内存使用)触发某些操作
  • 当异常或意外返回值时打印所有堆栈(带 参数和本地值(函数引用)

  • 有几个技术点我现在找不到解决方案…

    如果它是一个web应用程序,并且您正在处理未处理的异常,您可以添加登录到global.asax;它可能有帮助,也可能没有帮助,但它似乎会给你比你目前拥有的更多的洞察力


    现在,从技术上讲,可以说修改global.asax就是修改生产代码,但我认为你的问题是你不想去修改生产代码中的数百个地方,等等。

    最简单的方法是在IIS中添加一个错误记录模块

    例如,请参阅,它有一个名为的IIS模块,该模块可以自动捕获站点引发的所有异常,而无需修改站点代码。(您只需在
    web.config
    文件中包含模块初始化即可。)您可以基于SharpBrake自己编写一些东西,或者


    事实上,对于你正在做的,你可能会考虑使用一个服务,或者它的免费开源克隆来进行日志记录,然后你可以使用SalpRead来进行错误捕捉。

    是的,修改数以百计的生产是巨大的工作,可能会导致手动错误,所以我想找到一个编程的方式来启用日志、异常和其他特性。