Получение исключения при получении данных из метода POST? - PullRequest
0 голосов
/ 09 октября 2018

Я получаю исключение при чтении данных поста.Я получаю сообщение об ошибке:

HttpContext.Current.Request.Form["UserID"].ToString();

И ошибка:

System.Collections.Specialized.NameValueCollection.this [string] .get вернул null.

В методе я поместил этот код:

StreamReader reader = new StreamReader(HttpContext.Current.Request.InputStream);
string requestFromPost = reader.ReadToEnd();

и данные поступают правильно, как это:

{
  "UserID": "1000",
  "Password": "ABCD"
}

Почему я не получаю значение в этом HttpContext.Current.Request.Form["UserID"].ToString()?Я также попробовал Request.QueryString, но безуспешно.Где я делаю не так?Любая помощь или предложение будет высоко ценится.Спасибо!

1 Ответ

0 голосов
/ 09 октября 2018

Нет Form по этому запросу.Чтобы тело запроса интерпретировалось как данные формы, оно должно:

  • иметь тип содержимого x-www-form-urlencoded
  • , которое фактически должно быть отформатировано как закодированные значения формы, то есть UserID=foo&Password=bar

Содержимое JSON - это JSON, оно не будет интерпретироваться как данные формы.

Веб-API уже должен позаботиться об этом за вас.Данный метод действия:

public void Action(Credentials credentials)

, где класс Credentials выглядит примерно так:

public class Credentials 
{
    string UserID { get; set;}
    string Password { get; set; }
}

Вам не нужно было делать что-либо еще, чтобы иметьплатформа превращает эти входящие данные JSON в экземпляр Credentials и передает их методу действия.Это происходит автоматически, если вы не сделали что-то странное, что нарушает соглашения, которые ожидает WebAPI.

...