2014-11-03 3 views
1

현재 프로젝트에서 Asp.net Web Api 2와 함께 Angularjs를 사용 중이고 워크 플로를 결정하기 위해 일부 헤더를 사용하려고합니다.If-Modified-Since Asp.Net 웹 Api 2

"If-Modified-Since"-header가 설정되고 값이 저장된 엔터티와 동일한 경우에만 엔터티를 업데이트하려고합니다.

$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); 
    } 
}); 

웹 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 속성이 설정되지 않은 이유를 아는 사람이 있습니까?

답변

1

헤더 값으로 보내는 날짜 형식을 확인하십시오. 날짜는 RFC 1123 표준에 따라 형식을 지정해야합니다.

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

이 형식이 아닌 경우

Request.Headers.IfModifiedSince 

가 null, 그 이유는 설명 할 것입니다.