Добрый вечер, что-то я в раздумьях, допустим есть такой метод web.api .net:
[HttpGet]
public async Task<IHttpActionResult> Index(Guid portalUser)
{
//можно сказать, что это фабрики которые создают нужные мне объекты.
//authCookiesManager примерно выглядит вот так:
/*
() =>
(context) => new AuthCookiesManager(
context.Request.Cookies,
context.Response.Cookies))
*/
var authCookiesManager = getAuthCookiesManager(ActionContext.HttpContext());
var сlient = getClient(ActionContext.HttpContext());
//можно ли здесь вызвать .ConfigureAwait(false)
var value = await сlient.FooAsync(portalUser);
//я понимаю, с .ConfigureAwait(false) в этом месте обратившись к ActionContext.HttpContext()
//я могу получить уже null, либо текущий контекст, либо вообще контекст какого-нибудь другого запроса
if (string.IsNullOrWhiteSpace(value ))
{
return BadRequest();
}
//authCookiesManager работает с cookies текущего запроса, которые я прокинул ему вначале метода
//Вот интересно поведение этих куки с .ConfigureAwait(false), они тоже подохнут или ссылки на них все же будут жить внутри данного объекта?
authCookiesManager.SaveSessionId(value , settings.Domain);
authCookiesManager.RemoveSessionState();
return Json(new ClientResult {RedirectTo = settings.Href});
}
internal static class HttpActionContextExtensions
{
private const string MsHttpContext = "MS_HttpContext";
internal static HttpContextBase HttpContext(this HttpActionContext context)
{
Ensure.NotNull(context, nameof(HttpActionContext));
return context.Request.Properties[MsHttpContext] as HttpContextBase;
}
}
Правильно ли я все понимаю? С .ConfigureAwait(false) код после него не может мне гарантировать http-контекст ActionContext.HttpContext(), но интересно как дела обстоят с cookies?