我有一个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;
}
知道如何修改它才能工作吗?基本上,如果用户没有传递任何参数,我们只需将它们发送到网页。
答案 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
属性中提供一些指令或内容,客户端将把它看作返回页面的主体。