Я пытаюсь установить заголовок с простой парой ключ/значение и хочу прочитать это из своего API. Итак, это мой звонок от клиента:
public async Task<T> Auth_GetAsync<T>(string path)
{
var client = BaseHttpClient;
var request = new HttpRequestMessage
{
RequestUri = new Uri(Path.Combine(client.BaseAddress.AbsoluteUri, path)),
Method = HttpMethod.Get,
Headers = { {"key", "param"} }
};
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(RequestHeader));
var task = await client.SendAsync(request);
return task.IsSuccessStatusCode
? JsonConvert.DeserializeObject<T>(await task.Content.ReadAsStringAsync())
: default(T);
}
когда я пытаюсь прочитать заголовок в своем действии, я получаю его полностью (с моей парой ключ/значение)
public async Task<IEnumerable<string>> GetAsync()
{
var i = Request.Headers;
return await Task.Run(() => new[] { "value1", "value2" });
}
когда я пытаюсь сделать это с помощью ActionFilterAttribute и/или IAuthorizationFilter, мой заголовок всегда содержит другие ключи, но никогда не содержит мою пару ключ/значение. Это мой атрибут:
public class RequiresKeyAttribute : ActionFilterAttribute, IAuthorizationFilter
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var req = filterContext.HttpContext.Request;
var auth = req.Headers["key"]; // this is null here
}
public void OnAuthorization(AuthorizationContext filterContext)
{
var i = filterContext.HttpContext.Request.Headers;
}
}
Моя цель в том, что фильтр действий проверяет, установлен ли ключ в заголовке или нет. Я не всегда хочу проверять свое действие, если ключ установлен и проверять его,...
Я делаю что-то неправильно? Или есть решение для этого?