客户端已断开连接

时间:2017-07-05 10:58:56

标签: c# asp.net-web-api

我在WebAPI的日志中收到以下错误

  

System.Web.HttpException(0x800703E3):客户端已断开连接。在   System.Web.Hosting.IIS7WorkerRequest.EndRead(IAsyncResult asyncResult)   在System.Web.HttpBufferlessInputStream.EndRead(IAsyncResult   asyncResult)在System.Threading.Tasks.TaskFactory   1.FromAsyncTrimPromise 1.Complete(TInstance thisRef,Func 3 endMethod,IAsyncResult asyncResult,Boolean requiresSynchronization)   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)在System.IO.StreamReader.d__97.MoveNext()   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   System.IO.StreamReader.d__62.MoveNext()   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)在Microsoft.Owin.OwinRequest.d__0.MoveNext()   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   Microsoft.Owin.Security.OAuth.OAuthAuthorizationServerHandler.d__22.MoveNext()   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   Microsoft.Owin.Security.OAuth.OAuthAuthorizationServerHandler.d__0.MoveNext()   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware   1.d__0.MoveNext()   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)在Web.API.Middleware.OwinMiddleware.d__1.MoveNext()   在D:\ UAT \ Web.API \ Middleware \ OwinMiddleware.cs:第49行

如何通过异常过滤器处理和忽略这些异常?为什么会出现此错误,如何重现?我想抓住并忽略The client disconnected而不是全部HttpException

我看到了this similar question,但我怎么能在异常过滤器中做到这一点?

2 个答案:

答案 0 :(得分:8)

您可以忽略这些例外情况。

例外说明问题是什么:"客户端断开"。这意味着客户端发起了一个请求,但在它阅读所有响应之前就已断开连接。

为什么会出现这种情况有很多原因,但是(除非你的服务器端有一个狡猾的互联网连接),这几乎肯定是客户端的一个问题。我经常看到这些,大多数似乎与机器人有关。所以我将它们过滤掉并忽略它们。

答案 1 :(得分:-1)

try
{
   // Open Connection
   // Do stuff
}
catch (HttpException  ex)
{
   // Log it?
   // Ignore it? 
   // Do what you want with it?
}
finally
{
   // Close connection
}