- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在这个示例中面临以下问题:
我无法在 ExceptionContext
中找到 IsOutermostCatchBlock
如果发生异常,此 HandleAsync
方法将执行两次。
( http://www.asp.net/web-api/overview/web-api-routing-and-actions/web-api-global-error-handling )
public class CustomExceptionHandler : IExceptionHandler
{
public virtual Task HandleAsync(ExceptionHandlerContext context,
CancellationToken cancellationToken)
{
if (!ShouldHandle(context))
{
return Task.FromResult(0);
}
return HandleAsyncCore(context, cancellationToken);
}
public virtual Task HandleAsyncCore(ExceptionHandlerContext context,
CancellationToken cancellationToken)
{
HandleCore(context);
return Task.FromResult(0);
}
public virtual void HandleCore(ExceptionHandlerContext context)
{
}
public virtual bool ShouldHandle(ExceptionHandlerContext context)
{
return context.ExceptionContext.IsOutermostCatchBlock;
}
}
public class OopsExceptionHandler : CustomExceptionHandler
{
public override void HandleCore(ExceptionHandlerContext context)
{
context.Result = new TextPlainErrorResult
{
Request = context.ExceptionContext.Request,
Content = "Oops! Sorry! Something went wrong." +
"Please contact support@contoso.com so we can try to fix it."
};
}
private class TextPlainErrorResult : IHttpActionResult
{
public HttpRequestMessage Request { get; set; }
public string Content { get; set; }
public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
HttpResponseMessage response =
new HttpResponseMessage(HttpStatusCode.InternalServerError);
response.Content = new StringContent(Content);
response.RequestMessage = Request;
return Task.FromResult(response);
}
}
}
}
最佳答案
IsOutermostCatchBlock
不存在。使用 CatchBlock.IsTopLevel
代替:
public virtual bool ShouldHandle(ExceptionHandlerContext context)
{
return context.ExceptionContext.CatchBlock.IsTopLevel;
}
NuDoq 上的来源:ExceptionHandlerContext和 ExceptionContextCatchBlock
关于c# - 谁能用示例客户端应用程序解释 IExceptionHandler 的工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22038800/
我正在尝试获取自定义 IExceptionHandler 来与我的 Azure Function(C# 类库)配合使用。我的想法是拥有自己的异常处理程序来处理意外异常,其中将包含我自己的内存中跟踪日志
我正在尝试获取自定义 IExceptionHandler 来与我的 Azure Function(C# 类库)配合使用。我的想法是拥有自己的异常处理程序来处理意外异常,其中将包含我自己的内存中跟踪日志
我在这个示例中面临以下问题: 我无法在 ExceptionContext 中找到 IsOutermostCatchBlock 如果发生异常,此 HandleAsync 方法将执行两次。 ( http:
处理 IExceptionHandler 的多个实现的最佳方法是什么?在 WebAPI 中? config.Services.Replace(typeof(IExceptionHandler), ne
我正在使用 ASP.NET 和 F# 构建 Web API。我有一个 IExceptionHandler 的实现。 type DefaultExceptionHandler() = let mapEx
我正在尝试为 ASP.NET web api 编写一个全局错误处理程序,它能够记录在我的 api 中导致未处理异常的请求的请求详细信息。我已经在我的 OWIN 启动类中注册了以下 GlobalExce
我创建了一个 OWIN 中间件来捕获异常。中间件实际上什么都不做,只是像这样用 try catch 包裹下一个调用 try { await _next(environment) } catch(E
在 C# 中实现这些处理程序时,我会做类似的事情, public class DefaultExceptionHandler : IExceptionHandler { public Task
我是一名优秀的程序员,十分优秀!