public async Task Handle(string messageId, IMessageSender sender, RemoteInvokeMessage message)
        {
            RpcContext.GetContext()
            .SetAttachments(message.Attachments);


            RemoteResultMessage remoteResultMessage;

            try
            {
                var serviceEntry =
                    _serviceEntryLocator.GetLocalServiceEntryById(message.ServiceId);
                if (serviceEntry == null)
                {
                    throw new LmsException($"通过服务id{message.ServiceId}获取本地服务条目失败", StatusCode.NotFindLocalServiceEntry);
                }
                var tokenValidator = EngineContext.Current.Resolve <ITokenValidator>();
                if (!tokenValidator.Validate())
                {
                    throw new RpcAuthenticationException("rpc token不合法");
                }

                var currentServiceKey = EngineContext.Current.Resolve <ICurrentServiceKey>();
                var result            = await serviceEntry.Executor(currentServiceKey.ServiceKey,
                                                                    message.Parameters);

                remoteResultMessage = new RemoteResultMessage()
                {
                    Result     = result,
                    StatusCode = StatusCode.Success
                };
            }
            catch (Exception e)
            {
                remoteResultMessage = new RemoteResultMessage()
                {
                    ExceptionMessage = e.GetExceptionMessage(),
                    StatusCode       = e.GetExceptionStatusCode(),
                    ValidateErrors   = e.GetValidateErrors()
                };
            }

            var resultTransportMessage = new TransportMessage(remoteResultMessage, messageId);
            await sender.SendAndFlushAsync(resultTransportMessage);
        }
 public ProtoBufRemoteResultMessage(RemoteResultMessage remoteResultMessage)
 {
     ExceptionMessage = remoteResultMessage.ExceptionMessage;
     StatusCode       = remoteResultMessage.StatusCode;
     Result           = remoteResultMessage.Result == null ? null : new DynamicItem(remoteResultMessage.Result);
 }
 public MessagePackRemoteResultMessage(RemoteResultMessage remoteResultMessage)
 {
     ExceptionMessage = remoteResultMessage.ExceptionMessage;
     StatusCode       = remoteResultMessage.StatusCode;
     Result           = remoteResultMessage.Result;
 }