【问题标题】:How to Redirect in ASPNET Web API如何在 ASPNET Web API 中重定向
【发布时间】:2013-06-27 15:47:10
【问题描述】:

是否有等效于 MVC 控制器方法 RedirectToAction 的 Web API 控制器方法?我想从另一个方法调用一个方法,但保留辅助方法的过滤器操作。

【问题讨论】:

  • 这可能会回答你的问题:stackoverflow.com/questions/16295597/…
  • 不同的动作有不同的参数。如何使用基于标头的重定向设置辅助操作的参数?直接进行类调用将不允许我使用现有的操作过滤器。还是我错误地接近这个?我应该改用自定义路由吗?

标签: asp.net-web-api


【解决方案1】:

是否有等效于 MVC 控制器方法 RedirectToAction 的 Web API 控制器方法?

您可以设置 Location 标头:

public HttpResponseMessage Get()
{
    var response = Request.CreateResponse(HttpStatusCode.Found);
    response.Headers.Location = new Uri("http://www.google.com");
    return response;
}

【讨论】:

  • 这两个动作有不同的参数。如何使用标头重定向设置辅助操作的参数值?
  • 只需使用Url 助手:response.Headers.Location = new Uri(Url.Action("SomeAction", "SomeController", new { foo = "bar" }));。
  • 这非常接近满足我的需求。但是,我的情况要求变量是 POST。如果不是这种情况,这个解决方案将非常有趣(尽管 WebAPI 没有 Url.Action)。尽管如此,这是迄今为止最好的答案......
【解决方案2】:

您可以检查此项以从 web api 中的控制器重定向页面

[Route("Report/MyReport")]
public async Task<IHttpActionResult> getReport() {

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

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

    return Redirect(uri);
}

【讨论】:

  • Edit 你的最后一个答案,而不是posting a new one
  • 我已经删除了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
  • 2020-11-05
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-20
相关资源
最近更新 更多