302重定向仍在尝试运行原始请求

本文关键字:试运行 原始 请求 重定向 | 更新日期: 2023-09-27 18:03:54

我们有一段代码检测旧的URL并执行重定向,如下所示:

Response.Clear();
Response.StatusCode = 301;
Response.Status = "301 Moved Permanently";
try
{
    Response.AddHeader("Location", MyLink.GetFullPath());
} catch
{
    Response.StatusCode = 302;
    Response.Status = "302 Moved Temporarily";
    Response.AddHeader("Location", "/");
}
Response.End();

本质上发生的事情是,有一个301永久重定向的尝试,如果这是不成功的,那么一个"302移动临时"被抛出到默认主页。

PROBLEM:我遇到的问题如下。如果输入URL(例如"/product/ABC123")。URL 301重定向失败,执行catch中的302重定向,但是原始URL ("/product/ABC123")仍然在后台执行。当我在调试器中运行网站时,302重定向工作正常,默认主页出现,然后半秒钟后执行补充页面,并由于原始URL不再可接受而出现服务器500错误。

我的问题如下:我怎么能完全停止原始请求,只是让302重定向做它需要做的事情。我已经尝试了"httpcontext . applicationinstance . completerrequest();"在"Response.End()"下面,但它没有停止原始请求。

EDIT:重定向代码正在从Controller类的Index方法执行。

302重定向仍在尝试运行原始请求

如果您处于控制器动作中,则退出动作方法并返回new HttpStatusCodeResult(302)