В ASP.NET ответ AJAX GET равен нулю, когда HttpStateCode равен 200 - PullRequest
1 голос
/ 22 апреля 2019

Я пытался получить информацию о зарегистрированном пользователе с помощью запроса ajax GET в проекте ASP.NET.В браузере код ответа 200, но я получил «нулевой» ответ.Вот несколько кодов, которые я попробовал.

    function display(json) {
        console.log(json);
    }
    var config = {
        "async": true,
        "crossDomain": true,
        "url": ApiBaseUrl + "GetUserDetail",
        "method": "GET",
        "headers": headers,
        "contenttype": "application/json; charset=utf-8",
        success: display,
    };

    $.ajax(config).done(function (response) {
        if (response) {
            console.log(response);
        }

        console.log("No Data");
    });

Код внутреннего контроллера:

        [Route("GetUserDetail")]
        [HttpGet()]
        public IHttpActionResult Get()
        {
            try
            {
                var identity = (ClaimsPrincipal)Thread.CurrentPrincipal;
                string email = identity.Claims.Where(c => c.Type == ClaimTypes.Email)
                               .Select(c => c.Value).SingleOrDefault();
                IBOAccount _accountBO = IOContainer.Get<IBOAccount>();
                var _registeredUser = "response";
                return Ok(_registeredUser);
            }
            catch (Exception)
            {
                throw;
            }
        }

Что не так?Похоже, что информация о токене не сохраняется в cookie.

Ответы [ 3 ]

2 голосов
/ 23 апреля 2019

Если вы используете ASP.NET MVC 5.2 (что-либо кроме ASP.NET Core 1.X, 2.X), вам нужно явно разрешить вашим запросам get возвращать JSON через JsonRequestBehavior собственность.Таким образом, ваше возвращаемое выражение может выглядеть примерно так:

return Json(_registeredUser, JsonRequestBehavior.AllowGet);

Если вы используете ASP.NET Core, то я могу предположить, что в вашем контроллере происходит исключение.

0 голосов
/ 28 июня 2019

Попробуйте этот код:

var AuthData = JSON.parse(UserCustomService.getSessionStorage("Token")); 
var headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Accept": "application/x-www-form-urlencoded",
    "cache-control": "no-cache",
    "Authorization": "Bearer " + AuthData.access_token, 
};
0 голосов
/ 25 апреля 2019

Если нет авторизации токена, она не может работать, и ответ НЕДЕЙСТВИТЕЛЕН. Используя «Авторизацию» в заголовках запросов, я получил адрес электронной почты и имя зарегистрированного пользователя.

Вот некоторые коды для использования токена.

    var AuthData = JSON.parse(UserCustomService.getSessionStorage("Token")); //get Token
    var headers = {
        "Content-Type": "application/x-www-form-urlencoded",
        "Accept": "application/x-www-form-urlencoded",
        "cache-control": "no-cache",
        "Authorization": "Bearer " + AuthData.access_token, // Bearer:type of Token
    };

    var GetUserInformation = function () {

        var config = {
            "async": true,
            "crossDomain": true,
            "url": ApiBaseUrl + "/GetUserInformation", // user defined route
            "method": "GET",
            "headers": headers
        };

        $.ajax(config).done(function (response) {
            if (response) {
                console.log(response);
            } else console.log("NULL response");
        });
    }

Токен должен быть во всех заголовках запросов для получения и обновления информации о текущем пользователе в базе данных из соображений безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...