Я создал простую страницу входа с использованием ASP.Net Core WebApi и AngularJS. Когда данные POST передаются в web api из angularJS с использованием $ http, данные JSON не сериализуются так, как ожидалось, в контроллере Web Api.Данные JSON не сериализуются в asp.net core web API
Вот мой ViewModel класс в Web API
public class LoginVM
{
[Required]
public string Username { get; set; }
[Required]
public string Password { get; set; }
}
Web Api метод контроллера
[HttpPost]
[Route("UserLogin")]
public LoginVM UserLogin(LoginVM loginVM)
{
if (loginVM.Username == "Admin" && loginVM.Password == "123")
{
return new LoginVM();
}
else
{
return null;
}
}
ConfigureServices метод statup.cs
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc()
.AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()));
}
AngularJS Сервис
(function() {
'use strict';
app.factory("membershipService", membershipService);
membershipService.$inject = ['$http', '$rootScope', '$log'];
function membershipService($http, $rootScope, $log) {
var urlHost = "http://localhost:33443";
function login(user) {
var url = urlHost + "/user/UserLogin"
return $http.post(url, user)
.then(function (result) {
$log.info(result);
return result.data;
}, function (error) {
$log.info(error);
}
);
};
return {
login: login
};
}
}());
Я не буду упоминать AngularJs вид и код контроллера здесь, так как объект пользователь успешно переходит на службу AngularJS в следующем формате JSON
{username="admin",password="123"}
К сожалению, данные Json не сериализации на объект LoginVM в Web Api как ожидалось. Оба поля Username и password становятся пустыми.
Цените, если кто-то может объяснить мне, что я сделал неправильно в моем коде
Вы можете связаться с API-интерфейсом API-интерфейса API? Можете ли вы прочитать данные, поступающие через loginVM? –
Вы тестировали его с помощью Fiddler или Postman? Попробуйте, если нет. – Anuraj
Он достигает метода контроллера. Он сериализуется для объекта LoginVM с именем Username = null и Password = null – Rama