0

我使用 $resource 使用 REST 服务。为什么即使我从服务器收到 Http: 200 (Ok) 响应,错误回调函数总是被触发?我尝试了 2 种设置回调函数的方法,但都有同样的问题。

这是我使用服务的 Angular 控制器:

appRoot
.controller(
    'BatchTaskController',
    ['$scope', 'batchTaskService', function ($scope, batchTaskService){

    $scope.runImportIntermediariesTask = function () {
        batchTaskService.runImportIntermediariesTask().$promise.then(
            function (value) { alert('success') },
            function (error) { alert('error') }
            );
    };

    $scope.runImportVantageTransactionsTask = function () {
        batchTaskService.runImportVantageTransactionsTask(
            function () { alert('success'); },
            function () { alert('error'); }
            );
    };

    $scope.runProcessVantageTransactionsTask = function () { batchTaskService.runProcessVantageTransactionsTask(); };
}]);

这是 Angular 服务:

var angularVectorServices = angular.module('angularVector.services', ['ngResource']);

angularVectorServices.factory('batchTaskService', ['$resource' , function ($resource) {
return $resource(
    "http://localhost:58655/api/BatchTask/:action",
    {
        action: "@action"
    },
    {
        runImportIntermediariesTask: {
            method: "POST",
            params: {
                action: "RunImportIntermediariesTask"
            }
        },

        runImportVantageTransactionsTask: {
            method: "POST",
            params: {
                action: "RunImportVantageTransactionsTask"
            }
        },

        runProcessVantageTransactionsTask: {
            method: "POST",
            params: {
                action: "RunProcessVantageTransactionsTask"
            }
        }
    }
);
}]);

我正在使用 WebApi。这是服务器 ApiController 代码:

public HttpResponseMessage RunImportIntermediariesTask()
    {
      //  _importIntermediariesTask.Run();

        var response = Request.CreateResponse(HttpStatusCode.OK);

        return response;
    }

    public HttpResponseMessage RunImportVantageTransactionsTask()
    {
        //_importVantageTransactionsTask.Run();

        var response = Request.CreateResponse(HttpStatusCode.OK);

        return response;
    }
4

1 回答 1

0

Take this as sample, try to make your action as this one below, setting up your code response code on HttpStatusCode.Whatever:

public HttpResponseMessage GetUser(HttpRequestMessage request, int userId, DateTime lastModifiedAtClient)
{
    var user = new DataEntities().Users.First(p => p.Id == userId);
    if (user.LastModified <= lastModifiedAtClient)
    {
         return new HttpResponseMessage(HttpStatusCode.NotModified);
    }
    return request.CreateResponse(HttpStatusCode.OK, user);
}

Hope this helps.

于 2014-01-09T13:08:02.703 回答