如何抛出HTTP错误?

时间:2010-08-03 10:06:47

标签: c# asp.net http response.redirect

我正在使用Response.Redirect将用户重定向到新页面,但我希望只有在查询字符串中有特定参数时才会显示该页面。否则,我想要显示HTTP 401身份验证错误页面。可以这样做吗?如果有,怎么样?如果没有,为什么不呢?

3 个答案:

答案 0 :(得分:3)

在您的页面中,您可以重定向到IHttpHandler,该public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Write("Authentication error"); context.Response.StatusCode = 401; } 将输出您的身份验证错误页面的内容,并将HTTP状态代码设置为401。

{{1}}

MSDN topic for IHttpHandler作为一些链接,可以帮助您了解什么是HTTP处理程序以及如何实现它。最重要的是:

HTTP Handlers and HTTP Modules Overview

Walkthrough: Creating a Synchronous HTTP Handler

How to: Register HTTP Handlers

答案 1 :(得分:2)

以下内容返回401状态代码,您需要添加HTML以根据IIS的配置方式自行显示。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (String.IsNullOrEmpty(Request.QueryString["RedirectParam"]))
            Response.StatusCode = 401; 
        else
            Response.Redirect("redirectpage.html");
    }

答案 2 :(得分:0)

我想我自己找到了答案,得到了Joao的一些帮助以及其他人提供的答案。

我只需要写下这个:

 if (Request.Params[param] != nul)
            {
               ...
            }
            else
            {
                Response.ContentType = "text/html";
                Response.Write("Authentication error");
                Response.StatusCode = 401;
                Response.End();
            }

简单! :)如果有任何潜在的问题,请告诉我!