Boa noite a todos.
Vou explicar meu problema e vocês tentem me informar onde esta o erro.
Tenho meu método C# assim
[ResponseType(typeof(Categoria))] public async Task<IHttpActionResult> Post(Categoria model) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (_repositorio.InsertOrUpdate(model, out Res)) { _repositorio.Save(); return CreatedAtRoute("DefaultApi", new { id = model.Id }, model); } return BadRequest("Erro ao tentar salvar, tente novamente mais tarde"); }
Tenho minha fabrica assim:
.factory("categoriasService", function($http, config, $q) { var _postItem = function(record) { var deferred = $q.defer(); $http.post(config.baseUrl + "/api/Categoria/Post", record).then( function(result) { deferred.resolve(result.data); }, function (erroResult) { deferred.reject(); } ); return deferred.promise; }; return { postItem: _postItem }; })
Ao chamar em meu controller assim:
.controller("newCategoriaCtrl", [ "$scope", "$http", "$window", "categoriasService", "modalConfirmationService", "$routeParams", function ($scope, $http, $window, categoriasService, modalConfirmationService, $routeParams) { if ($routeParams.id !== undefined) { categoriasService.find($routeParams.id).then(function (result) { $scope.newCategoria = result; }); $scope.titleAcao = "Alterar"; } else { $scope.newCategoria = { Id: 0 }; $scope.titleAcao = "Cadastrar"; } $scope.save = function() { //console.log($scope.newCategoria); categoriasService.postItem($scope.newCategoria) .then(function (newCategoria) { console.log(newCategoria);//aqui o objeto está sempre vazio por que acontece o erro 500. modalConfirmationService.getModalInstance("Sucesso", "Dados salvos com sucesso!"); }, function() { modalConfirmationService.getModalInstance("Erro", "Não foi possível executar sua ação, tente novamente mais tarde."); }) .then(function() { $window.location = "#"; }); }; } ]);
Quando chamo a aplicação sem ativar o debug no console do navegador sempre ocorre erro 500 e não sava a informação na base de dados.
http://localhost:54100/api/Categoria/Post 500 (Internal Server Error)
Mas se eu ativar o modo debug no VS, dá o mesmo erro no console, mas a informação é salva na base de dados.
O que está errado?