Невозможно вызвать метод HTTP POST из C # - Внутренняя ошибка сервера - PullRequest
0 голосов
/ 08 ноября 2018

Я создал проект web api и реализовал приведенный ниже метод HTTP POST.

    [HttpPost, ActionName("updateProfile")]
    public IHttpActionResult updateProfile([FromBody]RequestDataModel request)
    {
        // MY CODE

    }

    public class RequestDataModel
    {
        public string FullName { get; set; }
        public int Age { get; set; }
    }

Это мой класс WebAPIConfig.

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

И я попытался вызвать этот метод из моего приложения на C #.

    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        var account = new { FullName = "Test", Age = 25 };

        StringContent content = new StringContent(JsonConvert.SerializeObject(account), Encoding.UTF8, "application/json");
        // HTTP POST
        var response = client.PostAsync("http://localhost:63648/api/Account/updateProfile", content);
        if (response.Result.IsSuccessStatusCode)
        {
           // MY CODE
        }
    }

Но возвращается «Внутренняя ошибка сервера».

enter image description here

1 Ответ

0 голосов
/ 08 ноября 2018

Существует ошибка в routeTemplate класса WebApiConfig.

Шаблон маршрута должен быть api/{controller}/{action}/{id} вместо api/{controller}/{id}

См. Ниже.

config.Routes.MapHttpRoute(
   name: "DefaultApi",
   routeTemplate: "api/{controller}/{action}/{id}",
   defaults: new { id = RouteParameter.Optional }
);
...