i want to Post a User to WebApi
Ive written this Controller :
public class AccountController : ApiController
{
public UserModel Get([FromUri]string username, [FromUri]string password)
{
var repository = new MongoRepository<User>();
User result = repository.Single(x => x.Username == username && x.Password == password);
UserModel user = result.ToUserModel();
if (result != null)
{
result.LastLogin = DateTime.Now;
user.LastLogin = DateTime.Now;
repository.Update(result);
}
return user;
}
public GenericResultModel Post(User user)
{
var repository = new MongoRepository<User>();
var existingUser = repository.Single(x => x.Username == user.Username || x.EmailAdress == user.EmailAdress);
if (existingUser == null)
{
if (repository.Add(user) != null)
{
return new GenericResultModel{Success = true, Errors = new List<string>()};
}
return new GenericResultModel(){Success = false, Errors = new List<string>(){"There was an Error adding the User !"}};
}
return new GenericResultModel(){Errors = new List<string>(){"The User already exists !"}, Success = false};
}
}
My RouteConfig:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
And my AngularJS Controller
mod.controller('accountCtrl', function ($scope, $http, $window, $location) {
$scope.credentials = { username: '', password: '' };
$scope.Login = function () {
$http({
method: 'GET',
url: 'http://localhost:9239/Api/Account/Get?username=' + $scope.credentials.username + '&password=' + $scope.credentials.password,
/* data: JSON.stringify(credentials), */
headers: { 'Content-Type': 'application/json; charset=utf-8', 'dataType': 'json' }
}).
success(function (data, status, headers, config) {
$window.sessionStorage.setItem('loginToken', data.Id);
//$location.redirectTo('/Home');
}).
error(function (data, status) {
console.log("Request Failed");
});
};
$scope.registerModel = { username: '', password: '', passwordrepeat: '', email: '', emailrepeat: '' };
$scope.RegisterUser = function () {
$http.post('http://localhost:9239/Account/',$scope.registerModel);
};
});
When i login, everythign works fine. But when i post a new User i get a 404 Not Found Error.
I tryied the [FromBody] Attribute but it didnt worked
When i debug my Code wont hit by the Service ...
Any Ideas ?
Postmethod with[HttpPost]and in the parameters with[FromBody], like you did in yourGetmethod with[FromUri]