Web API重定向到网页

时间:2018-04-27 16:10:55

标签: c# .net .net-core asp.net-web-api2

我有一个Web API,我需要转换为API Core 2.我有一个问题似乎无法解决。控制器中有一个使用Request.CreateResponse的重定向,它似乎在.Net Core中不可用?

public HttpResponseMessage Get() {
    var response = Request.CreateResponse(HttpStatusCode.Redirect);
    response.Headers.Location = new Uri("https://xxx.xxxx.com");
    return response;
}

知道如何修改它才能工作吗?基本上,如果用户没有传递任何参数,我们只需将它们发送到网页。

3 个答案:

答案 0 :(得分:6)

ASP.Net-Core中的语法已更改。行动结果中不再使用HttpResponseMessage。它们将像任何其他模型返回的对象一样序列化。

请改为使用返回Controller.Redirect

RedirectResult方法
public IActionResult Get() {
    return Redirect("https://xxx.xxxx.com");
}
  

RedirectResult

     

RedirectResult会将我们重定向到提供的URL,无论URL是相对的还是绝对的,它只是重定向,非常简单。另外需要注意的是,它可以暂时重定向我们,我们将获得302状态代码或永久重定向我们,我们将获得301状态代码。如果我们调用Redirect方法,它会暂时重定向我们...

参考Demo.

答案 1 :(得分:1)

您可以使用HttpResponseMessage代替:

 var response = new HttpResponseMessage(HttpStatusCode.Redirect);
 response.Headers.Location = new Uri("https://insight.xxx.com");

答案 2 :(得分:1)

这就是Redirect()方法的确切作用:

return Redirect("https://xxx.xxx.com");

但如果您想要更多控制权,可以返回ContentResult

response.Headers.Location = new Uri("https://xxx.xxx.com");
return new ContentResult {
  StatusCode = (int)HttpStatusCode.Redirect,
  Content = "Check this URL"
};
但是,我没有看到这样做有什么好处。好吧,除非你使用一些不遵循重定向的客户端,并且你想在Content属性中提供一些指令或内容,客户端将把它看作返回页面的主体。