问题描述
使用我拥有的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 });
context
是 ServerCallContext