Asp.net mvc 从asp.net web api post操作重定向

Asp.net mvc 从asp.net web api post操作重定向,asp.net-mvc,c#-4.0,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc,C# 4.0,Asp.net Mvc 4,Asp.net Web Api,我对ASP.NET4.0WebAPI非常陌生。我们可以在POST操作结束时重定向到另一个URL吗?类似于响应.重定向(url) 实际上,我通过Web API(比如www.abcwebapi.com/upload)从MVC应用程序上传文件(比如www.abcwebapi.com/upload) 这里的upload是POST操作。我将一个由多部分组成的表单发布到Web API上载控制器的post操作。上传后,我想重定向回www.abcmvc.com 这可能吗?当然可以: public HttpRes

我对ASP.NET4.0WebAPI非常陌生。我们可以在POST操作结束时重定向到另一个URL吗?类似于<代码>响应.重定向(url)

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

这里的
upload
是POST操作。我将一个由多部分组成的表单发布到Web API上载控制器的post操作。上传后,我想重定向回
www.abcmvc.com

这可能吗?

当然可以:

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

以下是另一种无需硬编码url即可访问网站根目录的方法:

var response = Request.CreateResponse(HttpStatusCode.Moved);
string fullyQualifiedUrl = Request.RequestUri.GetLeftPart(UriPartial.Authority);
response.Headers.Location = new Uri(fullyQualifiedUrl);
注:
只有当您的MVC网站和WebApi都位于同一个URL上时,才会起作用

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

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

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

   return Redirect(uri);
}

使用这种重定向技术解决了我使用其他重定向技术得到的“对象移动到”WebAPI页面。另外,对于临时重定向而不是永久重定向,您可以使用
HttpStatusCode.Redirect
(302)或
.RedirectMethod
(303)@Darin Dimitrov,这很有效。为什么当我使用HttpStatusCode.Redirect时,我的客户端会收到401响应?@dotnetguy请停止建议相同的编辑。如果您愿意,请在单独的答案中张贴您更改的代码。继续编辑没有意义,审阅者将拒绝每次编辑。
    [HttpGet]
    public RedirectResult Get()
    {
        return RedirectPermanent("https://www.google.com");
    }