Проблемы Json с использованием Angular2 и Net Core Web Api

Мне не удается получить запрос, содержащий JSON на стороне сервера. Почему-то имя пользователя и пароль не отображаются должным образом на объект User.

Итак, мой вопрос: что я делаю не так и как это исправить?

вот модель:

 public class User
    {
        public string username { get; set; }
        public string password { get; set; }
    }

У меня есть базовое действие для входа в мой контроллер api, получающий запрос:

    [AllowAnonymous]
    [HttpPost("[action]")]
    public ActionResult Login([FromBody] User user)
    {
        if (user.username == null || user.password == null)
            return StatusCode(400);

        string result = _tokenHelper.GenerateToken(user.username);

        return new JsonResult(result);
    }

и сервис Angular 2, отправляющий запрос

import { Injectable } from '@angular/core';
import { /*HTTP_PROVIDERS, */ Headers } from '@angular/http';
import { AuthHttp } from 'angular2-jwt';

@Injectable()
export class AuthenticationService {

    jwtToken: any;

    constructor(public authHttp: AuthHttp) { }

    //jwtHeader = new Headers({
    //    "Content-Type": "application/json",
    //    "alg": "HS256",
    //    "typ": "JWT"
    //});

    Login(username: string, password: string) {
        this.authHttp.post('/api/login',
            JSON.stringify({
                "username:": username,
                "password:": password
            })
            //,{ headers: this.jwtHeader }
        ).subscribe(data => this.jwtToken = data,
            () => console.log(this.jwtToken));

        return this.jwtToken;
    }

РЕДАКТИРОВАТЬ 1:

Я отладил программу, и нулевой объект User получает действие на сервере, хотя я вижу, что запрос имеет более или менее правильное тело. Только параметры расположены в неправильном порядке, пароль по неизвестной причине стоит первым.

здесь видно, что запрос действительно выполняется и возвращает 400 в соответствии с моим контрольным кодом


person Stanislaw T    schedule 21.12.2016    source источник
comment
Как узнать, что проблема в отправке запроса на сервер? Можете ли вы включить снимок экрана с вкладкой вашей сети при отправке этого запроса (и ответа)?   -  person eko    schedule 21.12.2016


Ответы (1)


Не могли бы вы попробовать отправить, не выполняя JSON.stringify в методе angular2? Stringify отправить его как строку, а не как объект json.

Надеюсь это поможет.

person hakany    schedule 21.12.2016
comment
Спасибо за предложение! К сожалению, это не помогло. - person Stanislaw T; 21.12.2016
comment
Я считаю, что вы отправляете свое сообщение как {имя пользователя: x, пароль: y} в скрипте. не могли бы вы также попробовать отправить как {user: {username: x, password: y}}? - person hakany; 21.12.2016
comment
Я отправляю его через фактическое приложение angular. отправка через скрипач дает мне 415, плохой формат по какой-то причине - person Stanislaw T; 21.12.2016
comment
вы также удалили : из имени пользователя: и пароля :? - person hakany; 21.12.2016
comment
если вы получили неверный запрос, добавьте content-type: text/json в заголовок. это должно решить - person hakany; 21.12.2016
comment
извините, это должно быть content-type: application/json - person hakany; 21.12.2016
comment
Да я такой тупой! Я забыл там :. Теперь я получаю пустой ответ клиенту. Собираюсь исследовать это сейчас! Большое спасибо!! - person Stanislaw T; 21.12.2016
comment
Не забудьте пометить как ответ, если это возможно. Спасибо - person Alex Beugnet; 22.12.2016