gRPC IFeatureCollection已被处置对象名称:“集合”

问题描述

使用我拥有的c#gRPC服务器 IServerStreamWriter<ClientNotification> ClientNotificationStream发送用户通知

当我尝试致电ClientNotificationStream.WriteAsync(parameters)我有

System.ObjectdisposedException: 'IFeatureCollection has been disposed.
Object name: 'Collection'.'```

IFeatureCollection has been disposed.
Object name: 'Collection'.. Internal Error:  StackTrace:    at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextdisposed()
   at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.Contextdisposed()
   at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.Fetch[TFeature](TFeature& cached,Func`2 factory)
   at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestAborted()
   at Grpc.AspNetCore.Server.Internal.HttpContextServerCallContext.get_CancellationTokenCore()
   at Grpc.Core.ServerCallContext.get_CancellationToken()
   at Grpc.AspNetCore.Server.Internal.HttpContextStreamWriter`1.WriteAsync(TResponse message)

解决方法

ClientNotificationStream 在我需要执行 WriteAsync() 时被释放。为了修复它,我添加了

WaitHandle.WaitAny(new[] { context.CancellationToken.WaitHandle });

contextServerCallContext