public async Task <IActionResult> GetImageResource( [FromRoute, Required] string id, [FromHeader(Name = "If-None-Match")] string etag) { if (string.IsNullOrEmpty(id) || !Guid.TryParse(id, out var guid)) { Logger.LogTrace("Not Found: No Id Specified!"); return(FormattedNotFound("No Id specified!")); } var ret = await _resourceModel.GetImageResource(guid); var resourceInfo = ret.Item1; var stream = ret.Item2; if (resourceInfo == null) { Logger.LogError("Not Found: Could not found requested Resource"); return(FormattedNotFound("Could not found requested Resource")); } if (resourceInfo.ETag.Equals(etag)) { return(FormattedNotModified()); } SetCacheControlHeadersToNoCache(); Response.Headers.Add("Content-Disposition", $"inline; filename=\"{WebUtility.HtmlEncode(resourceInfo.Name)}\""); Response.Headers.Add("Content-Type", resourceInfo.ContentType.ToString()); Response.Headers.Add("Content-Length", resourceInfo.Size.ToString()); Response.Headers.Add("ETag", resourceInfo.ETag); return(new FileStreamResult(stream, resourceInfo.ContentType.ToString())); }