ASP.NET MVC和C#:HttpStatusCodeResult()与HttpNotFound()

时间:2019-01-20 18:39:54

标签: c# .net asp.net-mvc http

在ASP.NET MVC中,返回以下内容有什么区别:

 return new HttpStatusCodeResult(HttpStatusCode.NotFound);

这:

 return HttpNotFound();

3 个答案:

答案 0 :(得分:4)

区别在于HttpStatusCodeResult使您可以控制返回的HTTP状态码,因为它允许您在HttpStatusCode枚举中指定任何预定义的状态码。 HttpNotFound始终返回HTTP状态代码404。

答案 1 :(得分:3)

HttpNotFound()方法returns new HttpNotFoundResult(null)

问题是new HttpNotFoundResult(null)new HttpStatusCodeResult(HttpStatusCode.NotFound)有什么区别?

  • HttpNotFoundResult除了检查状态码(if (result is HttpNotFoundResult))之外,还可以通过检查类型(if (StatusCode == 404))来测试返回码。
  • return HttpNotFound();易于键入。

否则没有区别。
HttpNotFoundResultsimply sets HttpStatusCodeResult的状态代码为HttpStatusCode.NotFound

答案 2 :(得分:-1)

enter image description here

查看此页面,HttpNotFound由HttpStatusCodeResult页面生成,在HttpNotFound中,您只能使用这种类型的消息。但是HttpStatusCodeResult允许使用其他类型的HttpStatuts,例如成功,内部错误等。

https://docs.microsoft.com/en-us/dotnet/api/system.web.mvc.httpnotfoundresult?view=aspnet-mvc-5.2