Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在MVC控制器中使用状态代码重定向到另一个URL_Asp.net Mvc_Redirect - Fatal编程技术网

Asp.net mvc 如何在MVC控制器中使用状态代码重定向到另一个URL

Asp.net mvc 如何在MVC控制器中使用状态代码重定向到另一个URL,asp.net-mvc,redirect,Asp.net Mvc,Redirect,我想将用户重定向到另一个URL,但要附带一个状态码 以下代码执行重定向,但状态代码始终为302 public ActionResult RedirectWithStatusCode(string redirectionUrl, int statusCode) { try { Response.StatusCode = statusCode; return Redirect(redirectionUrl); } c

我想将用户重定向到另一个URL,但要附带一个状态码

以下代码执行重定向,但状态代码始终为302

public ActionResult RedirectWithStatusCode(string redirectionUrl, int statusCode)
{
     try
     {
           Response.StatusCode = statusCode;
           return Redirect(redirectionUrl);
     }
     catch (Exception ex)
     {
           Response.StatusCode = 404;
           //log exception
           return new EmptyResult();
     }            
}

对状态代码
301使用
RedirectPermanent()
,对状态代码
302使用
Redirect()

有一些变体,如
RedirectToAction()
RedirectToActionPermanent()
RedirectToRoute()
RedirectToRoutePermanent()
,遵循相同的原则

编辑:

回答您的问题时,如果您想在较低级别上操纵响应,请尝试以下操作:

public void RedirectWithStatusCode(string redirectionUrl, int statusCode)
{
    try
    {
        Response.StatusCode = statusCode;
        Response.Headers["Location"] = redirectionUrl;
        Response.End();
    }
    catch (Exception ex)
    {
        Response.StatusCode = 404;
        //log exception
        Response.End();
    }
}
测试URL:/redirectwithstatuscode?状态代码=308&redirectionurl=http://google.com


警告:您可能需要确保传递的URL属于您的域,否则您可能会使您的网站受到重定向攻击。

但是有没有办法配置状态代码或将其作为参数发送,如所述,这是一种ActionResult方法,而不是void。那么,返回类型应该是什么呢?您正在终止函数体中的响应,因此不需要返回任何内容。Void是有效的,但是如果对您有效的话,我建议您坚持使用内置的Redirect和RedirectPermanent方法。