I am trying to work through an example using HttpClient
from the ASP.NET Web Api but I am receiving a status code 500 in the response and I don't know why.
I have the following code in a test:
var baseAddress = new Uri("http://localhost:54997");
var config = new HttpSelfHostConfiguration(baseAddress);
var server = new HttpSelfHostServer(config);
((HttpConfiguration)config).Routes.MapHttpRoute(
name: "default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new
{
id = RouteParameter.Optional
});
using (var client = new HttpClient(server))
{
client.BaseAddress = baseAddress;
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.GetAsync("/api/user/getUserDetails").Result;
}
My controller method is like this:
[HttpGet]
[ActionName("getUserDetails")]
public string GetUserDetails()
{
return "hello";
}
The controller action responds fine in Fiddler.
The error seems to be thrown in the Content property of the response.
[System.Net.Http.ObjectContent<System.Web.Http.HttpError>] = {System.Net.Http.ObjectContent<System.Web.Http.HttpError>}
I'm sorry that's not much to go on.
EDIT Please see Darin's answer below. I also put the code in a console application and it works fine - so why not in the test project?
Can someone point me in the right direction of what might be wrong please?
response.Content.ReadAsStringAsync().Result
to see if you get more details about the error? Also if there are no error details, can you try setting the error detail policy to Alwaysconfig.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always
(this shouldn't matter as its localhost, but you can give it a try) – Kiran Challa May 16 '13 at 15:31