[英]Task parameter scope on gRPC server
我有一個從客戶端調用的 gRPC 服務器任務。 請求參數在任務范圍內,我不知道如何檢索它並在其他類中使用它。 在任務外打印“currentRequest”不返回任何內容。 非常感謝你的幫助。
public class LoggingImpl : Logging.LoggingBase
{
private Server server;
RequestInfo currentRequest;
public ClientController controller;
public override Task<LoggingResponse> LoggingMCM(RequestInfo request, ServerCallContext context)
{
currentRequest = request;
Console.Log(currentRequest);
return Task.FromResult(new LoggingResponse { Result = "this is a reply from Unity Server" });
}
public void GetRequestInfo()
{
Console.Log(currentRequest);
}
public void StartServer()
{
server = new Server
{
Services = { Logging.BindService(new LoggingImpl()) },
Ports = { new ServerPort("127.0.0.1", 50010, ServerCredentials.Insecure) }
};
server.Start();
}
}
我期望 currentRequest 可以在 Taks 范圍之外使用。 如何在主線程和其他類上使用請求信息?
由於gRPC 服務注冊為瞬態(至少如果它們以標准方式注冊),將為每次 gRPC 服務調用創建類LogginImpl的新實例。
使請求靜態化可能會導致您期望的行為,因為它不會在每次調用時重新實例化(第 4 行):
private static RequestInfo currentRequest;
請記住,如果您想從請求中記錄一條(字符串)消息,您仍然必須從請求中提取消息(因為您在GetRequestInfo()方法中將整個對象傳遞給了控制台)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.