相关疑难解决方法(0)

Owin SelfHost WebApi - 客户端在响应期间关闭连接会引发异常吗?

我正在运行一个基于Owin Selfhost的WebApi,我在其中输入了一个API未处理的异常记录器

config.Services.Add(typeof(IExceptionLogger), _apiExceptionLogger);
Run Code Online (Sandbox Code Playgroud)

ApiExceptionLogger的相关部分:

    public override void Log(ExceptionLoggerContext context)
    {
        if (context == null || context.ExceptionContext == null) return;

        Logger.Error("Unhandled exception from Web API", context.ExceptionContext.Exception);
    }
Run Code Online (Sandbox Code Playgroud)

它定期捕获和记录的情况是客户端请求数据集然后在发送结果(JSON)时关闭连接的人 - 用chrome发出请求,然后在所有结果返回之前点击X按钮: P

我已经粘贴了下面的堆栈跟踪以获得完整性,只想知道两件事:

  • 这是常规/预期的行为吗?AFAIK是......我正在运行一个非常默认的API和管道
  • 有办法处理这个吗?在取消的情况下基本上更优雅地停止请求处理(在整个请求管道中记录的取消令牌确实浮现在脑海中,但在这种情况下它们看起来并不像在所有令牌仅支持合作取消之后)

我没有深入研究套接字级别发生的事件序列,到目前为止,这只是一个日志记录的麻烦.

System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException ---> System.Net.HttpListenerException: The I/O operation has been aborted because of either a thread exit or an application request
   at System.Net.HttpResponseStream.EndWrite(IAsyncResult asyncResult)
   at Microsoft.Owin.Host.HttpListener.RequestProcessing.ExceptionFilterStream.EndWrite(IAsyncResult asyncResult)
   --- End of inner exception stack trace ---
   at Microsoft.Owin.Host.HttpListener.RequestProcessing.ExceptionFilterStream.EndWrite(IAsyncResult asyncResult) …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-web-api owin

15
推荐指数
1
解决办法
3686
查看次数

标签 统计

.net ×1

asp.net-web-api ×1

c# ×1

owin ×1