I'm using angularjs $http for making request to asp net web api. The web api on the server manages the caching via ETags. If my response status code is 304 then it goes in the error function and not in the success. I don't understand what is the reason for this weird behavior of angularjs. Below is my code
function getEmployeesPartial(pageIndex, pageSize) {
var deferred = $q.defer();
var uri = config.remoteServiceName + 'odata/Employees?$select=EmployeeId,FirstName,LastName,Email,Designation/Name&$top=' + pageSize + '&$skip=' + (pageIndex * pageSize) + '&$inlinecount=allpages' + '&$expand=Designation';
var authData = common.getAuthData();
var authHeaderValue = "Bearer " + authData.token;
var etagHeaderValue = angular.empty;
if (common.etag !=angular.empty) {
etagHeaderValue = common.etag;
}
$http.get(uri, { headers: { 'Authorization': authHeaderValue,'If-None-Match':etagHeaderValue } }).success(function (response, status, headers, httpconfig) {
// alert(headers('Etag'));
common.etag = headers('Etag');
deferred.resolve(response);
}).error(function (err, status, headers, httpconfig) {
if (status === 500) {
deferred.reject(err['odata.error'].innererror.message);
}
deferred.resolve();
});
return deferred.promise;
}
Any ideas ?