如果修改自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
属性吗?
检查作为头值发送的日期格式。日期必须根据RFC 1123标准进行格式化。如果
Request.Headers.GetValue("If-Modified-Since")
不是这种格式,这就解释了的原因
Request.Headers.IfModifiedSince
为null。