Http Post Angularjs вызывает внутреннюю ошибку сервера через веб-API - PullRequest
0 голосов
/ 17 октября 2019

У меня простая операция вставки поста http из angularjs через веб-API. Но я не знаю, почему я продолжаю получать внутреннюю ошибку сервера. Функции http GET работают нормально. Но для сообщения http данные успешно вставляются в базу данных через WebAPI, но ответ от службы не принимается. Получение внутренней ошибки сервера 500.

WebAPI

 // POST: api/Website/InsertEmployee
[ResponseType(typeof(Employee))]
[HttpPost]
public IHttpActionResult InsertEmployee(Employee employee)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    objCSADBEntities.Employee.Add(employee);
    objCSADBEntities.SaveChanges();

    return CreatedAtRoute("DefaultApi", new { id = employee.EmployeeID }, employee);
}

Служба Angularjs

(function () {

    var app = angular.module('myApp');

    app.factory('websiteService', ['$http', function ($http) {
        var factory = [];

        factory.insertEmployee = function (webAPIHostName,employee) {
            var request = $http({
                method: 'POST',
                url: webAPIHostName + '/Website/InsertEmployee',
                data: employee
            })
            return request;
        }

        return factory;
    }
   ]);
})();

Контроллер Angularjs (Где вызывается служба, я получаю внутреннюю ошибку сервера 500)

var employee = {
    EmployeeID: 1,
    Name: 'Test',
    Phone: '111-111-1111'
};

var insertEmployee = websiteService.insertEmployee($scope.webAPIHostName , employee);
insertEmployee.then(function (response) {
    alert("Submitted Employee Successfully.");
    //success response here
}, function (error) {
    // error handling here
});

1 Ответ

0 голосов
/ 17 октября 2019

Можете ли вы с помощью фиддлера или почтальона проверить, что ваш вызов API возвращает то, что вы ожидаете? Как только вы сможете убедиться, что WebAPI возвращает действительный HttpStatus (от 200 до <400), вы можете проверить свой код переднего плана (angularjs). Вызовите webAPIHostName + '/ Website / InsertEmployee' и добавьте тело JSON (при условии его JSON) к вашему вызову скрипача. Измените метод на POST и включите в заголовок </p>

Content-Type: application / json

Если ваш ответ не соответствует вашим ожиданиям, попробуйте изменить возврат API с

* 1006. *

до

return Request.CreateResponse(HttpStatusCode.OK, employee);

Если вы можете убедиться, что ваш POST работает должным образом, проверьте ваш angularjs.

Что касается Angularjs, ваш http-вызов может быть обновлен до

angular.module('myApp').factory('websiteService', ['$http', function ($http) {            
    var insertEmployee;

    insertEmployee = function (webAPIHostName, employee) {            
        return $http.post(webAPIHostName + '/Website/InsertEmployee', JSON.stringify(employee));
    }

    return {
        insertEmployee: insertEmployee
    };
}]);



// Angular Controller

var employee = {
    EmployeeID: 1,
    Name: 'Test',
    Phone: '111-111-1111'
};

websiteService.insertEmployee($scope.webAPIHostName , employee)
    .then(function (response) {
        alert("Submitted Employee Successfully.");
        //success response here
      }, function (error) {
        // error handling here
    });
...