在我目前的项目中,我正在使用Angularjs和Asp.net WebApi2,并尝试使用一些头文件来确定工作流程。
在一种情况下,我希望仅当设置了“if -Modified- set”-header并且值与存储的实体相同时才更新实体。
我的angular代码如下所示:
$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);
}
});Web Api代码如下所示:
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属性吗?
发布于 2015-10-24 00:00:24
检查要作为标头值发送的日期格式。日期格式必须符合RFC 1123标准。如果
Request.Headers.GetValue("If-Modified-Since")不是这种格式,这就解释了为什么
Request.Headers.IfModifiedSince为空。
https://stackoverflow.com/questions/26709131
复制相似问题