在grpc中传递上下文信息,但是在下一个中间件里却获取不到

#问题:在grpc中传递上下文信息,但是在下一个中间件里却获取不到

#情况如下:
做了删减,大概逻辑是这样的,通过md.Set方法插入值后,debug确实可以找到信息,但是在第15行handler(srv, ss)执行下一个中间件时

func GrpcJwtAuthTokenMiddleware(serviceDetail *dao.ServiceDetail) func(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
    return func(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
        md, ok := metadata.FromIncomingContext(ss.Context())
        if !ok {
            return errors.New("miss metadata from context")
        }
        appList := dao.AppManagerHandler.GetAppList()
        for _, appInfo := range appList {
            if appInfo.AppID == claims.Issuer {
                md.Set("app", public.Obj2Json(appInfo))
                break
            }
        }
        if err := handler(srv, ss); err != nil {
            log.Printf("GrpcJwtAuthTokenMiddleware failed with error %v\n", err)
            return err
        }
        return nil
    }
}

在这里metadata.FromIncomingContext()获取上下文信息后,使用md.Get("app")获取的值却为空,debug发现 md, ok := metadata.FromIncomingContext(ss.Context())此方法获取的map中并没有上个中间件set进的"app"信息,请问这种情况是否有有效的解决方法

func GrpcJwtFlowCountMiddleware(serviceDetail *dao.ServiceDetail) func(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
    return func(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
        md, ok := metadata.FromIncomingContext(ss.Context())
        if !ok {
            return errors.New("miss metadata from context")
        }
        appInfos := md.Get("app")    
    }
}

问题初步解决了,我降低版本从google.golang.org/grpc v1.49.0 // indirect降低到google.golang.org/grpc v1.36.1,现在取得app信息了