根据我的要求,我将返回自定义错误。在 global.asax 应用程序错误中没有重定向任何其他URL。 Response.Redirect(URL)
,Server.Transfer(URL)
未重定向。它显示发送HTTP标头后无法重定向。我试过但不工作。请尽量帮助我。下面是我的代码
try
{
Exception exc = Server.GetLastError();
ErrorLogger LogError = new ErrorLogger();
// Handle HTTP errors
if (exc.GetType() == typeof(HttpException))
{
ex = (HttpException)Server.GetLastError();
int httpCode = ex.GetHttpCode();
// Filter for Error Codes and set text
if (httpCode >= 400 && httpCode < 500)
ex = new HttpException
(httpCode, "Safe message for " + httpCode + " HTTP codes.", ex);
else if (httpCode > 499)
ex = new HttpException
(ex.ErrorCode, "Safe message for " + httpCode + " HTTP codes.", ex);
else
ex = new HttpException
(httpCode, "Safe message for unexpected HTTP codes.", ex);
// Log the exception and notify system operators
ErrorLogger.Error(ex);
Server.ClearError();
Response.Clear();
Response.Buffer = true;
Response.Redirect("http://www.stackoverflow.com");
if (!Response.IsRequestBeingRedirected)
// Will not be called
Response.Redirect("http://www.google.com");
//ScriptManager.RegisterStartupScript(Page, typeof(Page), "OpenWindow", "window.open('ErrorPage.aspx');", true);
//Response.Write("<script> window.open('http://localhost:54749/ErrorPage.aspx','_blank'); </script>");
//Response.Redirect("http://www.google.com", true);
//Response.Redirect("~/ErrorPage.aspx");
}
else
{
ErrorLogger.Error(exc);
// LogError.NotifySystemOps(exc);
// Clear the error from the server
//Server.ClearError();
}
}
catch (Exception ex)
{
ErrorLogger.Error(ex);
}
答案 0 :(得分:0)
根据Response.Redirect(string url)
的MSDN文档,当&#34;在发送HTTP标头后尝试重定向时,它将抛出HttpException&#34;。由于Response.Redirect(string url)
使用了Http&#34;位置&#34;响应标头(http://en.wikipedia.org/wiki/HTTP_headers#Responses),调用它将导致标头被发送到客户端。这意味着,如果您再次拨打电话,或者在您以其他方式发送标头后再拨打电话,则会收到HttpException。
防止多次调用Response.Redirect()
的一种方法是在调用之前检查Response.IsRequestBeingRedirected property (bool)
。
//导致标题发送到客户端(Http "Location" response header
)
Response.Redirect("http://www.stackoverflow.com");
if (!Response.IsRequestBeingRedirected)
// Will not be called
Response.Redirect("http://www.google.com");
注意* 一旦发布重定向301/302,您也无法更改HTTP响应状态代码。
答案 1 :(得分:0)
您是否尝试过Response.Redirect(&#34; http://www.google.com&#34;,true);
你能告诉我们你使用这段代码的global.asax文件的哪一部分。
void Application_BeginRequest(object sender, EventArgs e)
{
}
或者它在其他地方
也尝试以下代码
HttpContext.Current.Response.Redirect("http://www.google.com/");
答案 2 :(得分:-1)
试试这个:
this.Response.Redirect("http://www.stackoverflow.com");