Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.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/2/.net/20.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# 控制台应用程序崩溃,未执行全局try-catch和UnhandledException_C#_.net_Dapper - Fatal编程技术网

C# 控制台应用程序崩溃,未执行全局try-catch和UnhandledException

C# 控制台应用程序崩溃,未执行全局try-catch和UnhandledException,c#,.net,dapper,C#,.net,Dapper,我有一个控制台应用程序,如下所示 static void Main(string[] args) { try { System.AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper; // My Code } catch(Exception ex) { } } static void UnhandledExceptionTr

我有一个控制台应用程序,如下所示

static void Main(string[] args) 
{
    try
    {
        System.AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;
        // My Code
    }
    catch(Exception ex)
    {
    }
}

static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e) 
{
    // The code.
}
在上面的代码中,catch既没有触发,也没有未处理的ExceptionTrapper。它突然说应用程序停止工作了。事件查看器没有关于崩溃的重要信息。事件查看器显示某些文件存在,但当检查无任何内容时。我正在使用.NET4.6.1

代码只是从oracle(使用dapper)和TransactionScope提取数据

编辑:我们找到了罪魁祸首。它在Oracle中进行更新,并将其包装在TransactionScope中。问题在于,无法捕获这些异常,有时会出现异常,但大多数情况下会失败。这些是使用Dapper更新Oracle的示例代码

using (var scope = new TransactionScope())
{
   UpdateOracleUsingDapperMethod();
   scope.Complete();
}

相关:

我们发现问题与
OLEDB连接相关。因此,我们转向了
OracleConnection
,没有崩溃。这意味着在Dapper中将Oracle与
TransactionScope
OLEDB连接一起使用会出现一些严重问题。

这可能与非托管库有关。。。您正在使用吗?不,我正在使用Dapper和Transaction Scope。在Main()方法运行和订阅事件之前,需要执行一系列操作。即时编译器需要首先运行,它很容易因FileNotFoundException而失败。在发布版本中更糟糕的是,现在它需要尝试内联方法调用,因此需要JIT更多的代码。任何带有字段初始值设定项的静态变量都是值得注意的,它们很可能在Main()开始执行之前运行并结束。通过将
//mycode
块中的代码移动到另一个静态方法中,使其变得更好。它需要[MethodImpl(MethodImplOptions.NoInLine])来减缓抖动。@HansPassant我可以调试前几行代码,但在它崩溃之后,一些异常非常糟糕,无法处理并触发failfast。就像这个网站的名字一样。查看“输出”窗口中的进程退出代码。有些是可以报告的,看看。相关的