c# - 如何通过IHttpActionResult获取内容

标签 c# asp.net-web-api asp.net-web-api2

我有一个返回 IHttpActionResult 的简单方法:

public IHttpActionResult invokeGetAction(HttpRequestMessage _request, String 
 _forResource)
{
    return new GetResourceActionResult(_request, _forResource);
}

GetResourceActionResult 的实现如下所示:

public class GetResourceActionResult : IHttpActionResult
{
    private readonly HttpRequestMessage _request;
    private readonly string _location;

    public GetResourceActionResult(HttpRequestMessage request, string location)
    {
        _request = request;
        _location = location;
    }

    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        var response = _request.CreateResponse(HttpStatusCode.OK);
        response.Headers.Location = new Uri(_location);
        return Task.FromResult(response);
    }
}

我想在 System.Web.Http.ApiControllers 的 Get() 方法中调用 invokeGetAction() 以将当前请求转发给另一个 API,例如

[Authorize]
[Route("")]
public IHttpActionResult Get()
{
    return _someService.invokeGetAction(Request, "http://mockingsvc.../api/songs");
}

而且我可以看到 HttpStatusCode.OK,所以我假设我现在没有失败。但我不知道在哪里以及如何获取 invokeGetAction() 传递的内容数据 - 在 ExecuteAsync() 中的某个地方?

最佳答案

好的,是的,我忘了一些东西...... ;-) 我的代码现在是

public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
    return Task.FromResult(Execute(_resourceUri));
}

public HttpResponseMessage Execute(String resourceUri)
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri(resourceUri);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            return client.GetAsync("api/songs").Result;
        }
    }

它就像一个魅力。

关于c# - 如何通过IHttpActionResult获取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35180388/

相关文章:

c# - 从 Nuget 安装会添加对 bin 目录的引用

c# - 在 WEB API POST 方法中检索参数

c# - Web Api IEnumerable 顺序

c# - 找不到类型或命名空间,但它在那里

c# - 在 .Net 中寻找 'Asynchronous' 字的解释?

routes - 为什么这个 Web Api 路由没有被接收?

c# - Azure - WebAPI 无法连接到 Azure DB,错误 : The system cannot find the file specified [SqlException]

c# - 如何在 C# Entity Framework 模型中使用 Json 数据类型?

c# - 为什么这个自定义的 Word 后台 UI 不显示其用户界面?

ASP.NET MVC 4 Web API Entity Framework 异常