【问题标题】:Return 307 Temporary Redirect in ASP.NET MVC在 ASP.NET MVC 中返回 307 临时重定向
【发布时间】:2010-12-11 06:30:37
【问题描述】:

是否可以从 ASP.NET MVC 中的控制器返回 307 Temporary Redirect?

我有时需要重新POST从一个表单提交到另一个URI的值。

使用 JavaScript 在客户端进行选择(从而绕过此问题)不是一种选择。

通过GET 重定向不是一个选项,因为发布的数据包含一个 8k 字符串,这可能意味着 URI 对于某些(很多?)浏览器来说太长了。

这可能吗?

【问题讨论】:

    标签: asp.net-mvc http redirect http-status-code-307


    【解决方案1】:

    看看下面的文章 - 你可以对 307 使用相同的技术:

    301 Redirects

    【讨论】:

    • 我需要有时根据传递的数据进行重定向。从路由处理程序访问模型(逻辑所在)似乎是错误的。在路由处理程序中拥有 [a copy of] 逻辑似乎更糟糕。
    • 使用 RouteHandler 似乎是解决此类问题的好方法。 - 只是没有涉及到逻辑。
    • 在这种情况下,您可以创建一个不同的操作结果 - 这里还是一个您可以修改的示例:stum.de/2008/10/22/permanentredirectresult
    • 我最终做了一些重新设计以避免整个问题。虽然有一些很棒的解决方案。谢谢 FinnNk
    • 打破了“有时”的要求,这意味着首先需要逻辑。作为通用解决方案还不错,但没有回答这个问题。
    【解决方案2】:

    要从 MVC 操作返回 307 重定向结果,请使用以下命令:

    public ActionResult Action()
    {
        string url = GetRedirectUrl()
        HttpContext.Response.AddHeader("Location", url);
        return new HttpStatusCodeResult(307);
    }
    

    【讨论】:

      【解决方案3】:

      ASP.NET Core:

       public RedirectResult (string url, bool permanent, bool preserveMethod);
      

      所以

      return Redirect(url, false, false); // 302
      return Redirect(url, true, false);  // 301
      return Redirect(url, false, true);  // 307
      return Redirect(url, true, true);   // 308
      

      【讨论】:

        猜你喜欢
        • 2018-07-15
        • 2023-03-29
        • 2020-09-06
        • 2019-07-29
        • 2017-05-22
        • 2018-03-13
        • 2022-07-06
        • 2011-05-20
        • 1970-01-01
        相关资源
        最近更新 更多