ardalis/Result
View on GitHubUnable to cast object of type 'Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor' to type 'Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor'.
Open
#137 opened on May 1, 2023
bughelp wanted
Repository metrics
- Stars
- (1,034 stars)
- PR merge metrics
- (PR metrics pending)
Description
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; }
}