Почему first_name неправильно оценивается как ноль? - PullRequest
1 голос
/ 11 октября 2019

Я создаю новый слой WebAPI для устаревшего приложения ASP.NET WebForms. Я пытаюсь заставить параметры моего запроса использоваться с конечной точкой, и я не могу до конца жизни понять, почему, когда я делаю оценку переменной аргумента, чтобы проверить, если first_name.Equals(null), почему это не правильнопомечается как true и вместо этого выдает следующее исключение:

System.NullReferenceException: 'Object reference not set to an instance of an object.'

first_name was null.

Исключение выдается, когда это запрос:

http://localhost/api/v1/person?first_name=

Исключение составляет НЕ , выдается, когда этоrequest:

http://localhost/api/v1/person?first_name=John

Я получаю, что по умолчанию значение, переданное конечной точке, будет нулевым, но даже при назначении значения по умолчанию оно все равно не будет помечено null как TRUE.

Вот моя конечная точка:

[HttpGet]
public void Get(string first_name = "", string last_name = "")
{
    string firstName = String.Empty;
    if (!first_name.Equals(null))  // Here is where the ObjectReferenceNull exception is thrown
        firstName = first_name;

    ...

    ApiResponse.Json(new JsonResource(data, links));
}

Вот моя информация о маршрутизации в Global.ascx.cs:

RouteTable.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/v1/{controller}/{id}",
    defaults: new { id = System.Web.Http.RouteParameter.Optional }
);

Что я пробовал:

  • Установка следующего атрибута метода [Route("api/v1/person/{first_name?}/{last_name?}")]

  • Установка атрибута [FromUri] с аргументами метода

Пока ничего не получалось.

1 Ответ

0 голосов
/ 11 октября 2019

Оказывается, исключение допустимо, и моя логика оценки неверна.

Изменение if (!first_name.Equals(null)) на if (first_name != null) теперь корректно оценивается как TRUE.

...