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);
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)); }
public abstract Task ResolveAsync(IBlobEntityResolveContext context);