Переадресація від веб-програми api post на веб-сайті asp.net


112

Я дуже новачок у веб-API ASP.NET 4.0. Чи можемо ми переспрямувати на іншу URL-адресу наприкінці дії POST? Щось на зразок ...Response.Redirect(url)

Насправді я завантажую файл із програми MVC (скажімо www.abcmvc.com) через Web API (скажімо www.abcwebapi.com/upload)

Ось uploadдія POST. Я надсилаю форму в декількох частинах після дії дії контролера завантаження веб-API. Після завантаження я хотів би переадресувати назад на www.abcmvc.com.

Чи можливо це?

Відповіді:


206

Звичайно:

public HttpResponseMessage Post()
{
    // ... do the job

    // now redirect
    var response = Request.CreateResponse(HttpStatusCode.Moved);
    response.Headers.Location = new Uri("http://www.abcmvc.com");
    return response;
}

9
За допомогою цієї методики перенаправлення було вирішено "об’єкт переміщено" на сторінку WebAPI, яку я отримував з іншими методами переадресації. Також для тимчасового переадресації замість постійного можна використовувати HttpStatusCode.Redirect(302) або .RedirectMethod(303)
AaronLS

@Дарин Димитров, це працює. Чому так, коли я використовую замість HttpStatusCode.Redirect, мій клієнт отримує відповідь 401?
Бретт

26

Ось ще один спосіб ви можете отримати корінь свого веб-сайту без жорсткого кодування URL-адреси:

var response = Request.CreateResponse(HttpStatusCode.Moved);
string fullyQualifiedUrl = Request.RequestUri.GetLeftPart(UriPartial.Authority);
response.Headers.Location = new Uri(fullyQualifiedUrl);

Примітка. Працює лише в тому випадку, якщо ваш веб-сайт MVC та WebApi мають однакову URL-адресу



5

Ви можете це перевірити

[Route("Report/MyReport")]
public IHttpActionResult GetReport()
{

   string url = "https://localhost:44305/Templates/ReportPage.html";

   System.Uri uri = new System.Uri(url);

   return Redirect(uri);
}

1
@dotnetguy Будь ласка, перестаньте пропонувати ту саму редакцію. Якщо хочете, опублікуйте змінений код в окремій відповіді. Немає сенсу продовжувати редагувати, оглядачі відключать кожне редагування вниз.
Каспар Лі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.