如果修改自Asp.Net Web Api 2

本文关键字:Web Api Net Asp 修改 如果 | 更新日期: 2023-09-27 18:28:47

在我当前的项目中,我将Angularjs与Asp.net Web Api 2一起使用,并尝试使用一些头来确定工作流。

在一种情况下,我只想在设置了"if Modified Since"-标头并且值与存储的实体相同的情况下更新实体。

我的角度代码如下:

$http.patch(selfLink, {message: item.message},
    {
        headers: {
            "Accept": "application/json",
            "Content-Type": "application/json",
            "If-Modified-Since": item.LastModified
        }
    }
)
.success(function(data, status, headers, config) {
    if (successCallback) {
        successCallback();
    }
})
.error(function(data, status, headers, config) {
    if (errorCallback) {
        errorCallback(data, status);
    }
});

WebApi代码如下所示:

public async Task<IHttpActionResult> Patch(int id, JObject updateEntity)
{
    using(var session = this.store.OpenAsyncSession())
    {
        var entity = await session.LoadAsync<TEntity>(id);
        if(entity == null)
        {
            return NotFound();
        }
        if(Request.Headers.IfModifiedSince.HasValue == false)
        {
            return BadRequest("Missing If-Modified-Since header");
        }
        // More code
    }
}

我提出的每一个请求都会得到Request.Headers.IfModifiedSince.HasValue == false,但当我尝试Request.Headers.GetValue("If-Modified-Since")时,我会得到我想要的值。

有人知道为什么不设置Request.Headers.IfModifiedSince属性吗?

如果修改自Asp.Net Web Api 2

检查作为头值发送的日期格式。日期必须根据RFC 1123标准进行格式化。如果

Request.Headers.GetValue("If-Modified-Since")

不是这种格式,这就解释了的原因

Request.Headers.IfModifiedSince

为null。