aspnetcore/Microsoft.AspNet.Mvc/HttpResponseMessageActionRe...

39 lines
1.2 KiB
C#

using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
namespace Microsoft.AspNet.Mvc
{
public class HttpResponseMessageActionResult : IActionResult
{
public HttpResponseMessage ResponseMessage { get; set; }
public HttpResponseMessageActionResult(HttpResponseMessage responseMessage)
{
ResponseMessage = responseMessage;
}
public async Task ExecuteResultAsync(ControllerContext context)
{
var response = context.HttpContext.Response;
response.StatusCode = (int)ResponseMessage.StatusCode;
foreach (var responseHeader in ResponseMessage.Headers)
{
response.Headers.AppendValues(responseHeader.Key, responseHeader.Value.ToArray());
}
var content = ResponseMessage.Content;
if (content != null)
{
foreach (var responseHeader in content.Headers)
{
response.Headers.AppendValues(responseHeader.Key, responseHeader.Value.ToArray());
}
await content.CopyToAsync(response.Body);
}
}
}
}