2012-07-04 6 views
87

Я очень новичок в ASP.NET 4.0 Web API. Можно ли перенаправить на другой адрес в конце POST действия ?, что-то вроде ... Response.Redirect(url)Перенаправление из asp.net web api post action

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

Здесь upload это POST-действие. Я отправляю многокомпонентную форму в сообщение post API диспетчера загрузки веб-API. После загрузки я хотел бы перенаправить обратно на www.abcmvc.com.

Возможно ли это?

ответ

164

Sure:

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; 
} 
+7

Используя этот метод Redirect решен «объект перешел в» WebAPI страницы я получаю с другими методами переадресации. Также для Redirect временного, а не постоянного, вы можете использовать 'HttpStatusCode.Redirect' (302) или' .RedirectMethod' (303) – AaronLS

+0

@Darin Dimitrov, это работает. Почему, когда я использую HttpStatusCode.Redirect вместо этого, мой клиент получает ответ 401? – Brett

24

Вот еще один способ, вы можете получить в корень вашего сайта без жесткого кодирования URL:

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

Примечание: будет работать только тогда, когда оба ваших MVC сайт и WebApi указаны на одном и том же адресе

0

Вы можете это проверить

[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 Пожалуйста, прекратите предлагать одно и то же редактирование. Если хотите, отправьте код, который вы изменили, в отдельном ответе. Нет смысла продолжать редактирование, рецензенты перевернут каждое редактирование. – Druzion

3
[HttpGet] 
    public RedirectResult Get() 
    { 
     return RedirectPermanent("https://www.google.com"); 
    } 
Смежные вопросы