从ASP.NET Web API重定向操作


112

我是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

这可能吗?

Answers:


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响应?
布雷特

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请停止建议相同的编辑。如果需要,请在单独的答案中发布更改的代码。继续编辑是没有意义的,审阅者将拒绝每次编辑。
卡斯珀·李
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.