【发布时间】:2016-08-28 23:43:58
【问题描述】:
在我当前的项目中,我将 Angularjs 与 Asp.net Web Api 2 一起使用,并尝试使用一些标头来确定工作流程。
在一种情况下,我只想在设置了“If-Modified-Since”-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 属性吗?
【问题讨论】:
标签: c# angularjs asp.net-web-api