问题描述
public override async Task DO(IAsyncStreamReader<Request> requestStream,IServerStreamWriter<Response> responseStream,ServerCallContext context)
{
try
{
while (!context.CancellationToken.IsCancellationRequested && await requestStream.MoveNext())
{
var message = requestStream.Current;
switch (message.RequestUnionCase)
{
case RequestUnionOneofCase.InitMessage:
isInitMessageDone = true;
var status = new Response
{
Status = new Status
{
Code = 100,Details = "Continue",}
};
await responseStream.WriteAsync(status);
break;
case RequestUnionOneofCase.C: break;
case RequestUnionOneofCase.A:
isDone = true;
break;
case RequestUnionOneofCase.None: break;
default: break;
}
}
if (isInitMessageDone && isDone)
{
var status = new Response
{
Status = new Status
{
Code = 200,Details = "Success"
}
};
await responseStream.WriteAsync(status);
Response finalResult = await this._responseMessageHandler.ProcessResultAsync();
finalResult.Result.ResultType = EnumResultType.Final;
await responseStream.WriteAsync(finalResult);
}
}
catch (Exception e)
{
}
}
Microsoft.AspNetCore.Connections.ConnectionAbortedException 在 Grpc.AspNetCore.Server.Internal.PipeExtensions+d__14`1.MoveNext
-
以下是我在使用所有默认设置时遇到相同错误的 Kestrel 设置
options.Limits.MaxConcurrentConnections = 10000; options.Limits.MaxConcurrentUpgradedConnections = 10000; options.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(20); options.Limits.Http2.MaxStreamsPerConnection = 10000;
服务器
在 Grpc.AspNetCore.Server.Internal.PipeExtensions+d__141.MoveNext type Microsoft.AspNetCore.Connections.ConnectionAbortedException assembly Grpc.AspNetCore.Server,Version=2.0.0.0,Culture=neutral,PublicKeyToken=d754f35622e28bad method Grpc.AspNetCore.Server.Internal.PipeExtensions+<ReadStreamMessageAsync>d__14
1.MoveNext 的问题 ID Microsoft.AspNetCore.Connections.ConnectionAbortedException
外部类型 System.IO.IOException
externalMessage 请求流被中止。
externalAssembly System.Private.CoreLib,版本=5.0.0.0,文化=中性,PublicKeyToken=7cec85d7bea7798e
外部方法 System.Runtime.ExceptionServices.ExceptiondispatchInfo.Throw
innermostType Microsoft.AspNetCore.Connections.ConnectionAbortedException
innermostMessage HTTP/2 连接出错。
{"assembly":"System.Private.CoreLib,Version=5.0.0.0,PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.ExceptionServices.ExceptiondispatchInfo.Throw","level": 0,"行":0}1
{"assembly":"system.io.pipelines,Version=5.0.0.1,PublicKeyToken=cc7b13ffcd2ddd51","method":"system.io.pipelines.PipeCompletion.ThrowLatchedException","level":1,"行":0}
{"assembly":"system.io.pipelines,"method":"system.io.pipelines.Pipe.GetReadResult","level":2,"method":"system.io.pipelines.Pipe.GetReadAsyncResult","level":3,"行":0}
{"assembly":"Microsoft.AspNetCore.Server.Kestrel.Core,PublicKeyToken=adb9793829ddae60","method":"Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2. Http2MessageBody+d__9.MoveNext","level":4,"line":0}
{"assembly":"System.Private.CoreLib,"level":5,"行":0}
{"assembly":"System.Private.CoreLib,"method":"System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess","level":6,"行":0}
{"assembly":"Grpc.AspNetCore.Server,PublicKeyToken=d754f35622e28bad","method":"Grpc.AspNetCore.Server.Internal.PipeExtensions+d__141.MoveNext","level":7,"line":0} {"assembly":"System.Private.CoreLib,"level":8,"level":9,"method":"System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification","level":10,"method":"System.Threading.Tasks.ValueTask
1. get_Result","level":11,"line":0}
{"assembly":"Grpc.AspNetCore.Server,"method":"Grpc.AspNetCore.Server.Internal.HttpContextStreamReader1+<<MoveNext>g__MoveNextAsync|9_0>d.MoveNext","level":12,"level":13,"level":14,"line":0} {Category} {SessionId} {MessageId} Exception during Responder Reader Task,Exception message: Status(StatusCode="Unavailable",Detail="Error starting gRPC call. HttpRequestException: An error occurred while sending the request. IOException: The request was aborted. IOException: The response ended prematurely,with at least 9 additional bytes expected.",DebugException="System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.IO.IOException: The request was aborted. ---> System.IO.IOException: The response ended prematurely,with at least 9 additional bytes expected. at System.Net.Http.Http2Connection.ReadAtLeastAsync(Stream stream,Memory
1 个缓冲区,Int32 minReadBytes)
在 System.Net.Http.Http2Connection.EnsureIncomingBytesAsync(Int32 minReadBytes) 在 System.Net.Http.Http2Connection.ReadFrameAsync(Boolean initialFrame)
在 System.Net.Http.Http2Connection.ProcessIncomingFramesAsync() ---内部异常堆栈跟踪结束---
在 System.Net.Http.Http2Connection.Http2Stream.CheckResponseBodyState()
在 System.Net.Http.Http2Connection.Http2Stream.TryEnsureHeaders()
在 System.Net.Http.Http2Connection.Http2Stream.ReadResponseHeadersAsync(CancellationToken cancellingToken)
在 System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage request,CancellationToken cancelationToken) --- 内部异常堆栈跟踪结束---
在 System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage 请求,CancellationToken 取消令牌)
在 System.Net.Http.httpconnectionPool.SendWithRetryAsync(HttpRequestMessage 请求,布尔 doRequestAuth,CancellationToken 取消令牌)
在 System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage 请求,CancellationToken 取消令牌)
在 System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage 请求,CancellationToken 取消令牌)
在 Grpc.Net.Client.Internal.GrpcCall2.runcall(HttpRequestMessage request,Nullable
1 超时)"),异常堆栈跟踪:
在 Grpc.Net.Client.Internal.HttpContentClientStreamReader`2.MoveNextCore(CancellationToken cancellingToken)
客户
响应者读取器任务期间出现异常,异常消息:状态(状态代码 =“不可用”,详细信息 = 启动 gRPC 调用时出错。HttpRequestException:发送请求时发生错误。
IOException:请求已中止。 IOException: 响应提前结束,预计至少有 9 个额外字节。",DebugException="System.Net.Http.HttpRequestException: 发送请求时出错。 ---> System.IO.IOException: 请求被中止。 ---> System.IO.IOException:响应提前结束,预计至少有 9 个额外字节。
在 System.Net.Http.Http2Connection.ReadAtLeastAsync(Stream stream,Memory1 buffer,Int32 minReadBytes) at System.Net.Http.Http2Connection.EnsureIncomingBytesAsync(Int32 minReadBytes) at System.Net.Http.Http2Connection.ReadFrameAsync(Boolean initialFrame) at System.Net.Http.Http2Connection.ProcessIncomingFramesAsync() --- End of inner exception stack trace --- at System.Net.Http.Http2Connection.Http2Stream.CheckResponseBodyState() at System.Net.Http.Http2Connection.Http2Stream.TryEnsureHeaders() at System.Net.Http.Http2Connection.Http2Stream.ReadResponseHeadersAsync(CancellationToken cancellationToken) at System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) at System.Net.Http.httpconnectionPool.SendWithRetryAsync(HttpRequestMessage request,Boolean doRequestAuth,CancellationToken cancellationToken) at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) at Grpc.Net.Client.Internal.GrpcCall
2.runcall(HttpRequestMessage request,Nullable1 timeout)"),Exception stacktrace: at Grpc.Net.Client.Internal.HttpContentClientStreamReader
2.MoveNextCore(CancellationToken cancellingToken)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)