asp.net 웹 API 게시 작업에서 리디렉션


112

저는 ASP.NET 4.0 Web API를 처음 접했습니다. POST 작업이 끝날 때 다른 URL로 리디렉션 할 수 있습니까?Response.Redirect(url)

실제로 www.abcmvc.comWeb API를 통해 MVC 응용 프로그램에서 파일을 업로드합니다 (예 : 예 www.abcwebapi.com/upload).

다음 upload은 POST 작업입니다. Web 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

@Darin Dimitrov, 작동합니다. 대신 HttpStatusCode.Redirect를 사용할 때 클라이언트가 401 응답을받는 이유는 무엇입니까?
Brett

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 동일한 편집 제안을 중지하십시오. 원하는 경우 변경 한 코드를 별도의 답변에 게시하십시오. 편집을 계속할 필요가 없으며 검토자는 각 편집을 거부합니다.
카스파 리
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.