gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:47:55 25 4
gpt4 key购买 nike

我正在运行一个基于 Owin Selfhost 的 WebApi,我已经通过

放入了一个 API 未处理的异常记录器
config.Services.Add(typeof(IExceptionLogger), _apiExceptionLogger);

ApiExceptionLogger相关部分:

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

Logger.Error("Unhandled exception from Web API", context.ExceptionContext.Exception);
}

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

为了完整起见,我在下面粘贴了一个堆栈跟踪,只想知道两件事:

  • 这是正常/预期的行为吗?据我所知……我正在运行一个非常默认的 API 和管道
  • 有什么办法可以解决这个问题吗?在取消的情况下,本质上更优雅地停止请求处理(确实想到了贯穿整个请求管道的取消 token ,但在这种情况下看起来它们并没有做太多,毕竟所有 token 只支持合作取消)

我还没有对在套接字级别发生的事件序列进行任何深入研究,到目前为止,这只是一个日志记录问题。

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)
at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
--- End of inner exception stack trace ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Owin.HttpMessageHandlerAdapter.<SendResponseContentAsync>d__20.MoveNext() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Owin.HttpMessageHandlerAdapter.<SendResponseContentAsync>d__20.MoveNext()

最佳答案

我在 Raspberry Pi 上的 Owin 主机上遇到了类似的问题。这可能会有所帮助 https://stackoverflow.com/a/30583109/1786034

关于c# - Owin SelfHost WebApi - 客户端在响应期间关闭连接会引发异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30109260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com