Проблема с POST API успешно завершена, но все еще возвращается код ошибки 500 - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть POST API, который выглядит так:

    [Route("api/Review/post")]
    [HttpPost]
    [AcceptVerbs("POST")]
    // POST: api/Review
    [ResponseType(typeof(review))]
    public IHttpActionResult Postreview(review review)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.review.Add(review);

        try
        {
            db.SaveChanges();
        }
        catch (DbUpdateException)
        {
            if (reviewExists(review.rating_id))
            {
                return Conflict();
            }
            else
            {
                throw;
            }
        }

        return CreatedAtRoute("DefaultApi", new { id = review.rating_id }, review);
    }

В форме у меня есть кнопка, которая рисует из полей формы для запуска через POST API. Это выглядит так:

    protected void Button1_Click(object sender, EventArgs e)
    {


        void Add_Review(int ap_id, int usr, string val, DateTime revdate, double scr, string com)
        {
            if (ap_id == 0)
            {
                throw new ArgumentException(message: "Please select a site");
            }
            if (string.IsNullOrEmpty(com))
            {
                throw new ArgumentException(message: "Please add a comment.");
            }
            using (var client = new HttpClient())
            {
                review r = new review
                {
                    site_id = ap_id,
                    usr_id = usr,
                    valid = val,
                    review_date = revdate,
                    score = scr,
                    comments = com
                };
                client.BaseAddress = new Uri("http://localhost:#####/");
                var response = client.PostAsJsonAsync("api/Review/post", r).Result;
                if (response.IsSuccessStatusCode)
                {
                    Console.Write("Success");

                    Response.Redirect("ReviewSubmitted.aspx");

                }
                else
                    Console.Write("Error");
            }
        }
        int usrid;
        usrid = Convert.ToInt32(ConfigurationManager.AppSettings["TestUserID"]);

        Add_Review(Convert.ToInt16(AirportList.SelectedValue),
            usrid,
            "Y",
            Convert.ToDateTime(DateTime.Now.ToString("M/d/yyyy")),
            Convert.ToDouble(textScore.Text),
            textComments.Text);
    }

Когда я нажимаю кнопку, я ожидаю, что она вернет «Успех» и перенаправит меня на мою страницу ReviewSubmitted.aspx. Однако, несмотря на то, что POST работает успешно, когда он возвращается к методу button_click, он говорит мне, что у меня ошибка 500.

Я подтвердил в базе данных, что POST прошел успешно. Это просто личный проект, который никуда не денется, поэтому я мог бы просто попросить его перенаправить и при неудаче, но я не хочу делать это по понятным причинам.

Что мне здесь не хватает? Почему это POST вызывает, но все еще говорит, что произошла ошибка?

1 Ответ

0 голосов
/ 06 сентября 2018

Я разобрался в проблеме. Сначала я нашел вопрос, который направил меня на скачивание Advanced REST Client (ARC).

После этого я смог определить, какая была моя настоящая ошибка в API возврате JSON:

"Message": "An error has occurred.",
"ExceptionMessage": "A route named 'DefaultApi' could not be found in the route collection. Parameter name: name" 

, и это вопрос, который решил его для меня:

Маршрутизация атрибута и CreatedAtRoute

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