从asp.net web api post action重定向

Sha*_*dat 104 asp.net-mvc c#-4.0 asp.net-mvc-4 asp.net-web-api

我是ASP.NET 4.0 Web API的新手.我们可以在POST操作结束时重定向到另一个URL吗?Response.Redirect(url)

实际上我www.abcmvc.com通过Web API(比方说www.abcwebapi.com/upload)从MVC应用程序上传文件(比如说)

upload是POST动作.我将多部分表单发布到Web API上传控制器的后期操作.上传后我想重定向回www.abcmvc.com.

这可能吗?

Dar*_*rov 195

当然:

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;
}
Run Code Online (Sandbox Code Playgroud)

  • 使用此Redirect技术解决了"对象移动到"WebAPI页面我使用其他重定向技术.对于Redirect临时而不是永久,您可以使用`HttpStatusCode.Redirect`(302)或`.RedirectMethod`(303) (8认同)

stt*_*taq 26

这是另一种方法,您无需硬编码网址即可访问您网站的根目录:

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

注意: 仅在您的MVC网站和WebApi位于同一URL上时才有效


Deb*_*ash 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);
}
Run Code Online (Sandbox Code Playgroud)


Jig*_*tri 5

    [HttpGet]
    public RedirectResult Get()
    {
        return RedirectPermanent("https://www.google.com");
    }
Run Code Online (Sandbox Code Playgroud)