Перенаправление веб-API на веб-страницу - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть веб-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 голосов
/ 27 апреля 2018

Вместо этого вы можете использовать HttpResponseMessage, что-то вроде:

 var response = new HttpResponseMessage(HttpStatusCode.Redirect);
 response.Headers.Location = new Uri("https://insight.xxx.com");
0 голосов
/ 27 апреля 2018

Вот что делает метод 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, которое клиент будет видеть как тело возвращаемой страницы.

0 голосов
/ 27 апреля 2018

Синтаксис изменился в ASP.Net-Core. HttpResponseMessage больше не используется в результатах действий. Они будут сериализованы, как и любой другой объект, возвращаемый моделью.

Вместо этого используйте метод Controller.Redirect, который возвращает RedirectResult

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

RedirectResult

RedirectResult перенаправит нас на предоставленный URL, не имеет значения, является ли URL относительным или абсолютным, он просто перенаправляет, очень просто. Следует также отметить, что он может временно перенаправить нас, мы получим код состояния 302, или перенаправим нас навсегда, код статуса 301. Если мы вызываем метод Redirect, он временно перенаправляет нас ...

Ссылка Объясненные результаты основных действий Asp.Net

...