如何将数据从ASP.NET WebAPI ApiController传递到ASP.NET MVC控制器?

时间:2014-01-10 16:56:51

标签: asp.net-mvc asp.net-web-api

假设我的ASP.NET Web API控制器中有以下方法:

public HttpResponseMessage Get(string code1, string code2)
{
    var response = new HttpResponseMessage(HttpStatusCode.Redirect);
    response.Headers.Location = new Uri("/", UriKind.Relative);

    return response;
}

我想获取传递给code1和code2的值,并将它们提供给MVC控制器(基于上面的重定向,让我们假设它是HomeController)。这样做的最佳方式是什么?

一些注意事项:

  • 我没有打电话给WebAPI。第三方站点调用端点并传递code1和code2(它是OAuth舞蹈的一部分,也是我使用重定向的原因)。
  • 其中一个值将是稍后用于身份验证的访问令牌。 (是的,这最终会使用HTTPS。)
  • 我想要一个足够灵活的方法将一个或多个值传递回MVC控制器。
  • 我不一定需要通过会话传递数据。

谢谢!

更新:以下是最终的代码和方法。

public async Task<HttpResponseMessage> Get(string display, string code)
{
    var auth = new AuthenticationClient();
    await auth.WebServer(_consumerKey, _consumerSecret, _callbackUrl, code);

    var url = string.Format("/?token={0}&api={1}&instance_url={2}", auth.AccessToken, auth.ApiVersion,
        auth.InstanceUrl);

    var response = new HttpResponseMessage(HttpStatusCode.Redirect);
    response.Headers.Location = new Uri(url, UriKind.Relative);

    return response;
}

1 个答案:

答案 0 :(得分:0)

除了使用查询字符串参数之外,不确定您有多少选择。路径参数并没有多大意义,因为没有带有身份验证令牌的自然层次结构。