在 .NET 代码优先 gRPC 中指定截止日期

Specifying a deadline in .NET code-first gRPC

使用 .NET 的代码优先 gRPC,调用服务时如何指定截止日期? Microsoft 的 Reliable gRPC services with deadlines and cancellation 页面只有非代码优先调用的示例。

我的 gRPC 接口被传递了 CallContext,如 Code-first gRPC services and clients with .NET 所指定,但是该页面上没有示例 - 或者,在我能找到的任何其他页面上 - 关于这是如何预期的待用。

查看CallContext的代码,可以传递一个包含截止日期的ServerCallContext。然而,这个 class 是抽象的,我能找到的唯一实现是内部的。

最后,CallContext.Default 包含一个 Deadline,但是这个 class 是不可变的,所以也没什么帮助。

我一发帖就找到了方法:

var deadline = DateTime.UtcNow.AddSeconds(15);
var context = CallContext.Default.CallOptions.WithDeadline(deadline);

await myService.DoStuffAsync(context);