protected virtual async Task ResolveFromHttpContextAsync(IBlobEntityResolveContext context, HttpContext httpContext)
        {

            var result = await GetBlobEntityFromHttpContextOrNullAsync(context, httpContext);
            if (result != null)
            {
                context.EntityType = result.EntityType;
                context.EntityId = result.EntityId;
            }
        }  
        public override async Task ResolveAsync(IBlobEntityResolveContext context)
        {
            var httpContext = context.GetHttpContext();
            if (httpContext == null)
            {
                return;
            }

            try
            {
                await ResolveFromHttpContextAsync(context, httpContext);
            }
            catch (Exception e)
            {
                context.ServiceProvider
                    .GetRequiredService<ILogger<HttpBlobEntityResolveContributorBase>>()
                    .LogWarning(e.ToString());
            }
        }
 protected abstract Task<BlobEntityResolveResult> GetBlobEntityFromHttpContextOrNullAsync([NotNull] IBlobEntityResolveContext context, [NotNull] HttpContext httpContext);
Ejemplo n.º 4
0
        protected override Task <BlobEntityResolveResult> GetBlobEntityFromHttpContextOrNullAsync([NotNull] IBlobEntityResolveContext context, [NotNull] HttpContext httpContext)
        {
            var result = new BlobEntityResolveResult();

            try
            {
                //StreamReader stream = new StreamReader(httpContext.Request.Body);
                //string body = stream.ReadToEnd();
                //httpContext.Request.EnableBuffering();
                using (var reader = new StreamReader(httpContext.Request.Body, System.Text.Encoding.UTF8))
                {
                    reader.BaseStream.Seek(0, SeekOrigin.Begin);  //大概是== Request.Body.Position = 0;的意思
                    var readerStr = reader.ReadToEndAsync().Result;
                    var input     = Newtonsoft.Json.JsonConvert.DeserializeObject <SaveBytesInput>(readerStr);
                    result.EntityType = input?.EntityType;
                    result.EntityId   = input?.EntityId;
                }
            }
            catch (Exception ex)
            {
            }
            return(Task.FromResult(result));
        }
        protected override Task <BlobEntityResolveResult> GetBlobEntityFromHttpContextOrNullAsync([NotNull] IBlobEntityResolveContext context, [NotNull] HttpContext httpContext)
        {
            var result = new BlobEntityResolveResult();

            if (httpContext.Request.QueryString.HasValue &&
                httpContext.Request.Query.ContainsKey(BlobEntityResolverConsts.EntityTypeKey) &&
                httpContext.Request.Query.ContainsKey(BlobEntityResolverConsts.EntityIdKey))
            {
                result.EntityType = httpContext.Request.Query[BlobEntityResolverConsts.EntityTypeKey].ToString();
                result.EntityId   = httpContext.Request.Query[BlobEntityResolverConsts.EntityIdKey].ToString();

                return(Task.FromResult(result));
            }

            return(Task.FromResult(result));
        }
Ejemplo n.º 6
0
 public abstract Task ResolveAsync(IBlobEntityResolveContext context);