Как вы отлаживаете запрос POST, который выполняется на сервере в памяти?

Итак, я пытаюсь протестировать свой API, используя Http-сервер в памяти, как указано в этом сообщении в блоге: http://blogs.msdn.com/b/youssefm/archive/2013/01/28/написание-тестов-для-an-asp-net-webapi-service.aspx

Мой код выглядит так:

[TestMethod]
    public void AddNewCustomer()
    {
        config = new HttpConfiguration();
        WebApiConfig.Register(config);
        HttpServer server = new HttpServer(config);
        using (HttpMessageInvoker client = new HttpMessageInvoker(server))
        {
            using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/Customer"))

            {
                request.Content = new StringContent(@"{ ""Email"" : ""[email protected]"", ""Password"" : ""password"" }");
                request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                using (HttpResponseMessage response = client.SendAsync(request, CancellationToken.None).Result)
                {
                    Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
                }
            }
        };
    }

Я пытался протестировать реальный API, который работает, когда я публикую клиента, он отвечает правильно. Когда я пытаюсь протестировать его с помощью этого, response.StatusCode является «внутренней ошибкой сервера».

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

РЕДАКТИРОВАТЬ: Мое тело ответа просто:

        "{\"Message\":\"An error has occurred.\"}"

Любые идеи?


person user2799792    schedule 20.09.2013    source источник
comment
Видите ли вы какое-либо сообщение об ошибке в теле ответа?   -  person Kiran Challa    schedule 20.09.2013
comment
Вы должны отладить его с помощью Feddle, а затем опубликовать код ответа HTTP из API здесь!   -  person Fals    schedule 20.09.2013
comment
Вы можете просто написать тело ответа в консоль: response.Content.ReadAsStringAsync().Result   -  person Kiran Challa    schedule 20.09.2013
comment
Тело ответа просто: {\Message\:\Произошла ошибка.\}   -  person user2799792    schedule 23.09.2013


Ответы (1)


Просто добавьте следующее после new HttpConfiguration()

config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
person Sergey Barskiy    schedule 02.05.2014