Shu*_*eng 5 c# asp.net asp.net-core
我想知道为什么返回 an 的 ASP.NET Core 操作ActionResult<IEnumerable<ZapResult>>
可能会返回 a BadRequest(scan)
,scan
自定义用户定义类的对象在哪里?
在这种情况下,我看不到任何转换ZapScan
为IEnumerable<ZapResult>
.
事实上,Ok()
和 都返回从(not )BadRequest()
派生的对象,但无论哪种情况,一切都正常并且 JSON 返回给客户端:ActionResult
ActionResult<T>
[HttpGet, FormatFilter]
public ActionResult<IEnumerable<ZapResult>> OnGet([FromQuery] ZapScan scan)
{
return HandleRequest(scan);
}
private ActionResult<IEnumerable<ZapResult>> HandleRequest(ZapScan scan)
{
if (ValidateScan(scan)) {
IEnumerable<ZapResult> zapResults = _zapDispatcher.Dispatch(scan);
return Ok(zapResults);
}
else
{
var clientIp = HttpContext.Request.HttpContext.Connection.RemoteIpAddress;
var requestUrl = UriHelper.GetDisplayUrl(HttpContext.Request);
_logger.LogError("{0}: Invalid request: [{1}] {2} ({3})", MethodBase.GetCurrentMethod().Name, clientIp, requestUrl, scan);
return BadRequest(scan);
}
}
Run Code Online (Sandbox Code Playgroud)
对我来说,似乎任何东西都可以转换为ActionResult<T>
,并且这种返回类型是完全通用的?
BadRequestResult
(返回者BadRequest()
)源自ActionResult
。
ActionResult<T>
可以隐式转换为ActionResult
(通过IConvertToActionResult
它实现的接口)。
因此,返回类型是兼容的,这就是它们可以互换使用的原因。
BadRequestResult
有一个构造函数,它接受任何object
并将其序列化为按原样输出到客户端的字符串。
归档时间: |
|
查看次数: |
598 次 |
最近记录: |