HttpStatusCodeResult

HttpStatusCodeResult:让mvc回传特定的http状态代码与消息给客户端,对于一些特殊的http响应,可利用httpStatusCodeResult帮助我们响应适当的状态代码:

1XX:参考信息
2XX:成功,(200网页正常响应,201表示Created服务器端已经成功创建资源)
3XX:重新导向,(302表示Found,查找这个资源但暂时转移到另一个URL,301代表Moved Permanently,表示URL已经发生永久改变,客户端必须转向另一个URL,且不用保留原本URL的记录)
4XX:客户端错误,(404Not Found找不到网页,401 Unauthorized 拒绝访问)
5XX:服务器错误,当服务器发生错误时会响应5XX的状态代码,(500 Internal Server Error 属于内部服务器错误,也就是常见的HTTP 状态代码)
如果想要响应201 Creadted状态代码,
eg:
[HttpPost]
public ActionResult Create(FormCollection form)
{
//TODO:一句客户端窗体输入的数据在数据库中创建一条记录
return new HttpStatusCodeResult(201,"数据已被成功创建");
//如下这种写法可以避免设置了一个非标准的HTTP状态代码
return new HttpStatusCodeResult(System.Net.HttpStatusCode.Created,"数据已被成功创建");
}
 
HttpNotFoundResult:用来响应http 404找不到网页的错误,在System.Web.Mvc.Controller类别中内建了一个
HttpNotFound辅助方法,方便回传HttpNotFoundResult类型的ActionResult结果。
eg:
public ActionResult Get(int id)
{
var data=GetDataFromDB(id);
if(data==null){
return HttpNotFound();
}else{
return View(data);
}
}
 
HttpUnauthorizedResult:响应http 401拒绝访问的错误,例如你可以在Action里做出一些额外的权限检查,如果查出客户端用户并没有特定数据的访问权限,就可以利用这个响应“拒绝访问”的http状态代码:
eg:
public ActionResult Get(int id){
if(CheckPermission(User.Identity.Name)){
var data=GetDataFromDB(id);
if(data==null){
return HttpNotFound();
}else{
return View(data);
}
}else{
return new HttpUnauthrizedResult();
}
}
posted @ 2015-06-24 15:02  caijinhao  阅读(307)  评论(0编辑  收藏  举报