Error messages returned from Web API method are omitted in non-dev environment
asp.net, asp.net-web-api, iis
Solution
Take a look at this MSDN post on the HttpConfiguration.IncludesErrorDetailPolicy:
In your Global.asax:
var config = GlobalConfiguration.Configuration;
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
I have used this configuration property to force error messages to include details.
Problem
I have a Web API controller POST method that behaves fine locally and on the testing server. If everything goes well it returns: ``` new HttpResponseMessage( HttpStatusCode.Created ) ``` If something goes wrong, it returns: ``` new HttpResponseMessage<IEnumerable<string>>( usefulMessages, HttpStatusCode.BadRequest ); ``` The problem is that when I make a request to the testing server that results in an error, I get the bad request code back but I never see the messages. If I make the exact same request to my local machine, I do see the messages. The following outputs are from my own tool: Sending a request to my local machine I get: ``` Status code: 400 (BadRequest) Response data: ["Error message one", "Error message two"] ``` Sending a request to the testing server I get: ``` Status code: 400 (BadRequest) Response data: Bad Request ``` The code that is running is exactly the same. The database is the same. Everything is the same except for the server servicing the request. I even have code to email myself the error messages so I know that the server is producing the correct error messages and behaving correctly. Could this be an IIS thing (like the equivalent of customErrors = RemoteOnly for Web API)? Not only are the error messages omitted from the response data, something invents the phrase "Bad Request" to put in there instead. Any ideas? Thanks.