相关疑难解决方法(0)

如何强制垃圾收集器运行?

采访者今天问我这件事......有答案吗?

c#

130
推荐指数
7
解决办法
17万
查看次数

捕获ASP.NET Web Api中所有未处理的异常

如何捕获ASP.NET Web Api中发生的所有未处理的异常,以便我可以记录它们?

到目前为止,我尝试过:

  • 创建并注册 ExceptionHandlingAttribute
  • 实现一个Application_Error方法Global.asax.cs
  • 订阅 AppDomain.CurrentDomain.UnhandledException
  • 订阅 TaskScheduler.UnobservedTaskException

ExceptionHandlingAttribute成功处理时引发的控制器操作方法和操作筛选范围内,但其他异常没有被处理,例如例外:

  • IQueryableaction方法返回的异常无法执行时抛出的异常
  • 消息处理程序抛出的异常(即HttpConfiguration.MessageHandlers)
  • 创建控制器实例时抛出异常

基本上,如果异常将导致500内部服务器错误返回到客户端,我希望它被记录.实现Application_Error在Web窗体和MVC中完成了这项工作 - 我可以在Web Api中使用什么?

c# unhandled-exception asp.net-web-api

112
推荐指数
4
解决办法
6万
查看次数

TAP全局异常处理程序

此代码抛出异常.是否可以定义将捕获它的应用程序全局处理程序?

string x = await DoSomethingAsync();
Run Code Online (Sandbox Code Playgroud)

使用.net 4.5/WPF

.net c# exception task-parallel-library async-await

18
推荐指数
1
解决办法
3444
查看次数

如何使用ContinueWith正确管理任务中的异常

在阅读有关任务和exepcion管理的信息后,我使用此代码来管理任务中抛出的异常:

Task<Object> myTask = Task.Factory.StartNew<Object>(doTask, CancellationToken.None,   TaskCreationOptions.None, TaskScheduler.Default);
myTask .ContinueWith(task => afterTask(task), TaskScheduler.FromCurrentSynchronizationContext());
Run Code Online (Sandbox Code Playgroud)

doTask和AfterTask在哪里:

private <Object> doTask() {
    throw new Exception("BOOM");
}

private afterTask(Task<Object> aTask) {

        if (aTask.IsFaulted)
        {
            MessageBox.Show(aTask.Exception.InnerException.Message);
        }
        else //whatever
}
Run Code Online (Sandbox Code Playgroud)

抛出Exception Boom时,Visual Studio会显示一条警告,通知未捕获异常但如果我继续执行异常则在afterTask函数中处理.

这段代码是正确的还是我错过了解任务的一些基本行为?有什么办法可以避免调试器发出没有捕获到execption的警告?有点烦人......

提前致谢

c# multithreading exception task faulted

8
推荐指数
1
解决办法
1万
查看次数