Pas de MediaTypeFormatter est disponible 'text/html'
J'ai écrit un ServiceHelper classe qui va aider à la POSTE pour un C# Web API contrôleur
public class ServiceHelper<TResponse, TRequest> : IServiceHelper<TResponse, TRequest>
{
public TResponse Execute
(
string endpoint,
string controller,
string action,
TRequest request,
string format = "application/json"
)
{
using (var httpClient = new HttpClient())
{
httpClient.BaseAddress = new Uri(endpoint);
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(format));
var response = httpClient.PostAsJsonAsync(String.Format("{0}/{1}", controller, action),
request).Result;
return response.Content.ReadAsAsync<TResponse>().Result;
}
}
}
J'obtiens toujours
Additional information: No MediaTypeFormatter is available to read an object of type 'ReadMotorVehiclesWorkflowResponse' from content with media type 'text/html'.
Aucune idée sur comment résoudre ce problème?
OriginalL'auteur user65439 | 2014-08-07
Vous devez vous connecter pour publier un commentaire.
Apparemment, le serveur renvoie HTML où vous vous attendez à du JSON, et, évidemment, il n'y a aucun moyen de désérialiser un
TResponse
de HTML...Je soupçonne que le serveur retourne un code d'erreur, et le code HTML est juste une représentation visuelle de l'erreur.
Vous devriez appeler
response.EnsureSuccessStatusCode()
pour s'assurer que la réponse indique la réussite (typiquement 200 OK). Si ce n'est pas le cas, il déclenche une exception.OriginalL'auteur Thomas Levesque
Ok, le problème est que l'application de la piscine .NET version a été défini sur la version 2.0 alors que le web API a été écrit pour .NET version 4.0, j'ai changé la version et il fonctionne maintenant comme prévu.
Il est à noter que c'est une bonne idée d'appeler
response.EnsureSuccessStatusCode()
comme mentionné dans la réponse ci-dessous.OriginalL'auteur user65439