/// <inheritdoc/> public async override Task ExecuteResultAsync(ActionContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } HttpResponse response = context.HttpContext.Response; HttpRequest request = context.HttpContext.Request; IActionResult result = GetInnerActionResult(request); await result.ExecuteResultAsync(context).ConfigureAwait(false); ResultHelpers.AddServiceVersion(response, () => ODataUtils.ODataVersionToString(request.GetODataVersion())); }
/// <inheritdoc/> public async override Task ExecuteResultAsync(ActionContext context) { if (context == null) { throw Error.ArgumentNull(nameof(context)); } HttpRequest request = context.HttpContext.Request; HttpResponse response = context.HttpContext.Response; IActionResult result = GetInnerActionResult(request); Uri location = GenerateLocationHeader(request); response.Headers["Location"] = location.AbsoluteUri; // Since AddEntityId relies on the response, make sure to execute the result // before calling AddEntityId() to ensure the response code is set correctly. await result.ExecuteResultAsync(context).ConfigureAwait(false); ResultHelpers.AddEntityId(response, () => GenerateEntityId(request)); ResultHelpers.AddServiceVersion(response, () => ODataUtils.ODataVersionToString(ResultHelpers.GetODataResponseVersion(request))); }
// internal just for unit test. internal Uri GenerateLocationHeader(HttpRequest request) { return(ResultHelpers.GenerateODataLink(request, Entity, isEntityId: false)); }
// internal just for unit test. internal Uri GenerateEntityId(HttpRequest request) { return(ResultHelpers.GenerateODataLink(request, Entity, isEntityId: true)); }