在asp.net核心控制器中,If-None-Match标头始终为null

时间:2017-07-25 11:27:21

标签: asp.net-core .net-core postman etag

我通过邮递员发送了一个带有“If-None-Match”标题的请求,但它在控制器中总是null

我使用的是Asp.net核心1.1。

我的代码有什么问题吗?

enter image description here 调试 enter image description here 代码

if (Request.Headers.ContainsKey("If-None-Match"))
{
    var oldETag = Request.Headers["If-None-Match"].First();
    if (cache.Get($"Tenant-{id}-{oldETag}") != null)
    {
        return StatusCode((int)HttpStatusCode.NotModified);
    }
}

更新1

我使用If-Match和&创建新请求If-None-Match标头,但控制器If-Match中只有If-None-Match标头仍然存在nullenter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

  • 您在调试器中查找错误的标头。而是HeaderIfMatch检查HeaderIfNoneMatch

  • Request.Headers.ContainsKey("If-None-Match") - 此代码很好,通过Postman为我工作。但是,相应于屏幕截图,看起来像是将If-None-Match添加为查询参数,而不是标题。

答案 1 :(得分:0)

你能试试这个语法吗? public class Column : BindableBase, INotifyPropertyChanged { public string name { get; set; } public ColumnValidation ColumnValidation { get; set; } public List<RefEntryValue> LookupValues { get; set; } = null; private bool _selected = false; public bool Selected { get => _selected; set { _selected = value; OnPropertyChanged(); } } }

您可以从 request.Headers.Keys.Contains(HeaderNames.IfNoneMatch) 导入 HeaderNames