【发布时间】:2018-03-18 12:55:36
【问题描述】:
我在“旧”的 ASP.NET 中有一个 IHttpActionResult,它的 ExecuteAsync 代码如下:
public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
var response = _value == null ?
_request.CreateResponse(StatusCode) :
_request.CreateResponse(StatusCode, _value);
if (_uri != null)
{
var relativeUri = new Uri(_uri.PathAndQuery, UriKind.Relative);
response.Headers.Location = relativeUri;
}
return Task.FromResult(response);
}
现在,要将其转换为 ASP.NET Core IActionResult,我意识到我需要将签名更改为
public async Task ExecuteResultAsync(ActionContext context)
我有两个具体需求:
- 如果
_value不为空,则将其作为响应正文发送回;和 - 如果
_uri不为空,则在响应的Location标头中将其发回。
我发现了很多类似的问题,例如 this,它建议操纵 context 的 Response 属性 - 但这并不能回答如何为 object 设置正文(而不是一个字符串)或this,它建议使用ObjectResponse,但我不清楚如何添加所需的标题。
你是怎么做到的?
【问题讨论】:
标签: c# asp.net-core