コード例 #1
0
        static async Task <string> LoadAttachment(IDataBus dataBus, string id)
        {
            using (var destination = new MemoryStream())
            {
                using (var source = await dataBus.OpenRead(id))
                {
                    await source.CopyToAsync(destination);
                }

                return(Encoding.UTF8.GetString(destination.ToArray()));
            }
        }
コード例 #2
0
        /// <summary>
        /// Hydrates the message, if it was dehydrated
        /// </summary>
        public async Task Process(IncomingStepContext context, Func <Task> next)
        {
            var transportMessage = context.Load <TransportMessage>();

            if (transportMessage.Headers.TryGetValue(Headers.MessagePayloadAttachmentId, out var attachmentId))
            {
                using (var destination = new MemoryStream())
                {
                    using (var source = await _dataBus.OpenRead(attachmentId))
                    {
                        await source.CopyToAsync(destination);
                    }

                    var body    = destination.ToArray();
                    var headers = transportMessage.Headers.Clone();

                    headers.Remove(Headers.MessagePayloadAttachmentId);

                    context.Save(new TransportMessage(headers, body));
                }
            }

            await next();
        }