【发布时间】:2010-08-03 10:06:46
【问题描述】:
我正在使用 Response.Redirect 将用户重定向到新页面,但我希望仅当查询字符串中有特定参数时才显示该页面。否则,我希望显示 HTTP 401 身份验证错误页面。可以这样做吗?如果是,如何?如果没有,为什么不呢?
【问题讨论】:
标签: c# asp.net http response.redirect
我正在使用 Response.Redirect 将用户重定向到新页面,但我希望仅当查询字符串中有特定参数时才显示该页面。否则,我希望显示 HTTP 401 身份验证错误页面。可以这样做吗?如果是,如何?如果没有,为什么不呢?
【问题讨论】:
标签: c# asp.net http response.redirect
您可以从您的页面重定向到IHttpHandler,该IHttpHandler 将输出您的身份验证错误页面的内容并将HTTP 状态代码设置为401。
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("Authentication error");
context.Response.StatusCode = 401;
}
MSDN topic for IHttpHandler 作为一些链接可以帮助您了解什么是 HTTP 处理程序以及如何实现它。最重要的是:
HTTP Handlers and HTTP Modules Overview
【讨论】:
以下返回 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");
}
【讨论】:
我想我自己想出了答案,在 Joao 的帮助下和其他人提供的答案..
我只需要这样写:
if (Request.Params[param] != nul)
{
...
}
else
{
Response.ContentType = "text/html";
Response.Write("Authentication error");
Response.StatusCode = 401;
Response.End();
}
简单! :) 让我知道这是否有任何潜在问题!
【讨论】: