Je l'ai vu dans cet article de blog , mais cela ne dit pas vraiment comment "l'activer". Et il semble que par défaut, il n'est pas activé.
Je sais que c'est une méthode d'extension, telle que définie ici: http://msdn.Microsoft.com/en-us/library/hh835786(v=vs.108).aspx mais comment puis-je y accéder? Si je tape Request.CreateErrorResponse
, le compilateur ne le reconnaît pas.
Je suis déjà using System.Net.Http
.
Utilisez-vous toujours une version préliminaire ou une version finale? Un certain nombre d'extensions ne sont pas apparues jusque juste avant la publication et n'existaient pas dans les versions précédentes de la version de webapi. Je ne sais pas si c'était l'un d'entre eux, mais c'est peut-être ce qui cause votre problème.
J'ai aussi remarqué cela dans la version finale. Et si vous n'avez pas la bonne déclaration using, ça va être une erreur. Vous avez besoin :
using System.Net.Http;
même si vous avez déjà ceci:
using System.Web.Http.Controllers;
Request est la propriété publique de la classe ApiController et doit être disponible pour toutes les actions d'API dans ce contrôleur.
public abstract class ApiController
{
...
public HttpRequestMessage Request { get; set; }
}
Voici un petit exemple de code qui fonctionne pour moi:
using System.Net;
using System.Net.Http;
using System.Web.Http;
public class MyFirstApiController : ApiController
{
// GET
public HttpResponseMessage Get(int id)
{
return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "Some message here");
}
}
Chose intéressante, si je retire avec System.Net.Http; instruction, Request n’a plus de méthode CreateErrorResponse ().
Bien que des points importants aient été répondus.
Une possibilité encore plus stupide est que vous ayez choisi un type de contrôleur incorrect. Assurez-vous d’avoir créé un contrôleur API Web , en cas de contrôleur MVC que vous ne pouvez pas avoir.
Request.CreateErrorResponse()
Juste une autre possibilité où vous pouvez trouver ce problème.
Dans le noyau .net, ajoutez Microsoft.AspNetCore.Mvc.WebApiCompatShim.dll
.
you can use from that In block Try-Catch.
[HttpGet]
public HttpResponseMessage DownloadVideo(Guid id, string title)
{
try
{
//Your Code at the end return result
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex.Message);
}
}
Utilisez System.Web.Http Assembly. Source: CreateErrorResponse, méthode