redirect的错误用法asp.net怎么使用自定义错误

工作了几年,写过程序也运营过网站,自定义错误也很熟悉了,最近再做项目发现有同事写了这样的代码

if (action != null)

{

       id = Request.QueryString["id"].GetString().GetInt();

       if (!IsPostBack)

      {

             DataInit();

             if (action.Equals("edit"))

             {

                    BindData();

              }

      }

}

else

{

       Response.Redirect("/error/403.html");

}

乍看一下,不错逻辑还是挺清晰的,如果请求为空就把页面重定向到没有访问权限的页面,可能大部分的人都这么写,也可能是学校里老师就这么教的吧,没有权限redirect到另一个页面。这样问题就来了,我的错误页面一定是放在那个路径下的吗?如果哪一天我整体移动了错误页面的位置,还要把每个页面下的重定向路径修改掉,这样写你玩的可嗨啊。如果这样那微软为我们提供了在自定义错误页面的意义何在?以上绝没有批评的意思,或许看到这许多人开始暗骂:你个吊人说了这么多,自己又能写成啥鸟样子。呵呵不急。

我们知道自定义错误页面有两种方法,当然我说的局限与asp.net和iis上,没玩过其他的平台。一种在iis上做处理还一种就是webconfig做配置,如还有其他谢谢来信指正。现在就出现我们该如何来应用这些自定义错误,首先像上面那段代码一定是不对的了,那我们该如何来写?或许有人会想到诶~页面出错的时候会出现错误码StatusCode是不是设置这个呢?当然你可以去试一下,不错接近了,可惜不是,心中是不是有些少许失落,别气馁同一个思路,既然是错误页面,在程序里什么的情况下叫错误呢?应该是所有人都遇到过那就是异常,对抛出异常,异常就是错误,迫不及待的我们再试一次,注意这里抛出的是http异常,啪啪啪敲完调试运行成功。哈哈哈像我们所希望的那样开始运行了,至此开始破口大骂,砸键盘摔电脑下班走人。

代码如下:

if (action != null)

{

       id = Request.QueryString["id"].GetString().GetLong();

       if (!IsPostBack)

        {

                    DataInit();

                    if (action.Equals("edit"))

                    {

                        BindData();

                    }

       }

}

else

{

       throw new HttpException(416,"请求范围不被允许");

}

webconfig配置如下:

<customErrors mode="RemoteOnly" defaultRedirect="/index.aspx">

      <error statusCode="401" redirect="/login.aspx"/>

      <error statusCode="403" redirect="/error/403.html"/>

      <error statusCode="404" redirect="/error/404.html"/>

      <error statusCode="416" redirect="/error/416.html"/>

</customErrors>

如果还有其他的自定义错误照此添加,当然你也可以不在webconfig里配置而是修改iis上你这个站点的错误页面配置。

 

谢谢耐心的看完,以上纯属个人拙见,如有错误欢迎指正。

 

 

 

你可能感兴趣的:(redirect)