當我嘗試從 ASP .NET Core 6 Web-Api 專案中的端點回傳匿名物件/DTO 時遇到問題。我收到一個錯誤,它無法將型別隱式轉換為 IActionResult。我在這個答案中建議了我使用的代碼,但不幸的是它對我不起作用,我也嘗試使用將匿名物件映射到 dto,但這也不起作用。任何幫助將不勝感激,在此先感謝。
我還嘗試回傳答案中建議的 Json(output),但是 Json() 我無法為“Json”指定使用,我還嘗試通過修改端點的回傳型別來回傳 JsonResult(output)但這也沒有用。
這是我使用的代碼:
[HttpGet]
public IActionResult GetAllEndpoints()
{
var endpoints = _endpoinDataSources
.SelectMany(es => es.Endpoints)
.OfType<RouteEndpoint>();
var output = endpoints.Select(
e =>
{
var controller = e.Metadata
.OfType<ControllerActionDescriptor>()
.FirstOrDefault();
var action = controller != null
? $"{controller.ControllerName}.{controller.ActionName}"
: null;
var controllerMethod = controller != null
? $"{controller.ControllerTypeInfo.FullName}:{controller.MethodInfo.Name}"
: null;
return new GetEndpointsDto
{
Method = e.Metadata.OfType<HttpMethodMetadata>().FirstOrDefault()?.HttpMethods?[0],
Route = $"/{e.RoutePattern.RawText.TrimStart('/')}",
Action = action,
ControllerMethod = controllerMethod
};
}
);
return output;
}
我還通過控制器建構式注入了 EndPointDataSource:
public MyController(IEnumerable<EndpointDataSource> endpointSources)
{
_endpoinDataSources = endpointSources;
}
uj5u.com熱心網友回復:
您需要更具體的回傳型別:
[HttpGet]
public IActionResult<List<GetEndpointsDto>> GetAllEndpoints()
{
...
return Ok(output.toList())
}
uj5u.com熱心網友回復:
您應該嘗試public ActionResult<object> GetAllEndpoints()然后回傳類似的東西,return Ok(output)或者只是return output我意識到我正在我的 API 中回傳輸出并且它作業正常
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/461401.html
標籤:C# asp.net 核心 asp.net-web-api
下一篇:用戶不包含Identity的定義
