ardalis/Result

Unable to cast object of type 'Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor' to type 'Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor'.

开放

#137 创建于 2023年5月1日

 (3 条评论) (0 个反应) (0 位负责人)C# (126 个派生)github user discovery
bughelp wanted

仓库指标

星标
 (1,034 个星标)
PR 合并指标
 (平均合并 8天 3小时) (30 天内合并 2 个 PR)

描述

Since the version 7.0.0, I get an exception

Unable to cast object of type 'Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor' to type 'Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor'.

If I rollback to 4.0.2, everything seems fine. I can see the method has changed, I don't know if it's an issue with the controllers configuration

// fails when accessing controller.ControllerContext.ActionDescriptor

internal static ActionResult ToActionResult(this ControllerBase controller, Ardalis.Result.IResult result)
    {
      IDictionary<object, object> properties = controller.ControllerContext.ActionDescriptor.Properties;
      ResultStatusOptions resultStatusOptions = (properties.ContainsKey((object) "ResultStatusMap") ? properties[(object) "ResultStatusMap"] as ResultStatusMap : new ResultStatusMap().AddDefaultMap())[result.Status];
      int statusCode = (int) resultStatusOptions.GetStatusCode(controller.HttpContext.Request.Method);
      return result.Status == ResultStatus.Ok ? (!typeof (Ardalis.Result.Result).IsInstanceOfType((object) result) ? (ActionResult) controller.StatusCode(statusCode, result.GetValue()) : (ActionResult) controller.StatusCode(statusCode)) : (!(resultStatusOptions.ResponseType == (Type) null) ? (ActionResult) controller.StatusCode(statusCode, resultStatusOptions.GetResponseObject(controller, result)) : (ActionResult) controller.StatusCode(statusCode));
    }
   // The property is being cast here 
   // Microsoft.AspNetCore.Mvc.ControlleContext
    public new ControllerActionDescriptor ActionDescriptor
    {
        get { return (ControllerActionDescriptor)base.ActionDescriptor; }
        set { base.ActionDescriptor = value; }
    }

贡献者指南