yoooling 2021-03-29 14:08 采纳率: 0%
浏览 68

关于asp.net core 处理返回值的问题,出现类型转换错误

 

现在想给接口的返回值统一封装一个格式(这里就是EcisActionResult),在filter里OnActionExecuted()里,把返回的结果封装成了一个类.

 public override void OnActionExecuted(ActionExecutedContext context)
        {
            if (context.Exception is ApplicationException appex)
            {
                context.Result = new ObjectResult(ActionResultGenerator.CreateErrorResult<object>(appex.Message));
                context.ExceptionHandled = true;
                _log.Warn($"{context.HttpContext.Request.Path} : {appex.Message}");
            }
            else if (context.Result is ObjectResult result)
            {
                if (result.Value is not IEcisActionResult)
                {
                    result.Value = ActionResultGenerator.CreateDataResult(result.Value);
                }
            }
            _log.Debug($"End-{context.HttpContext.Request.Method}: {context.HttpContext.Request.Path} StatusCode:{context.HttpContext.Response.StatusCode}");
        }

现在的问题是,当接口返回类型为字符串时,会发生一个错误:

Unable to cast object of type 'FxEcis.WebApi.DataEntities.EcisActionResult`1[System.Object]' to type 'System.String'

 但是如果是其他数据结构,比如int,bool,list<xxx>,都可以正常的转成那个类型并返回,

如果加一句

result.DeclaredType = typeof(EcisActionResult<object>);

字符串就也能格式化了,但是有大神知道为什么其他数据类型不用加也能正常返回的原因吗

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 19:20
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 火车票关联12306问题
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 非科班怎么跑代码?如何导数据和调参