MVC Controller返回错误请求?

我想知道是否有可能通过MVC控制器的内容返回错误的请求? 我能够做到这一点的唯一方法是throw HttpException但是在这里我无法设置任何内容。 试过这种方法,但由于一些奇怪的原因,我总是得到回报。 是否有可能做到这一点?

 public class SomeController : Controller { [HttpPost] public async Task Foo() { var response = new HttpResponseMessage(HttpStatusCode.BadRequest); response.Content = new StringContent("Naughty"); return response; } } 

 return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "naughty"); 

将Http状态代码设置为错误请求,并使用Content方法发送内容以及响应。

 public class SomeController : Controller { [HttpPost] public async Task Foo() { Response.StatusCode = 400; return Content("Naughty"); } } 

除了@Ekk的答案,请务必检查:

ASP.NET + Azure 400错误请求不返回JSON数据

将以下条目添加到“web.config”。

     

当然可以。

看看我的行动吧

 // GET: Student/Details/5 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Student student = db.Students.Find(id); if (student == null) { return HttpNotFound(); } return View(student); } 

我认为这是最好的做法

  1. 返回HttpStatusCodeResult(HttpStatusCode.BadRequest); 如果用户没有提供所需的值

  2. 返回HttpNotFound(); 如果用户提供了所需的值但没有隐藏

希望这能帮助你

您可以将错误消息传递给第二个参数,如下所示:

 return new HttpResponseMessage(HttpStatusCode.BadRequest, "Your message here");