39 lines
1.5 KiB
C#
39 lines
1.5 KiB
C#
namespace Kit.Helpers
|
|
{
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Routing;
|
|
using System.Reflection;
|
|
|
|
public static class MicrosoftAspNetCoreHttpHttpContextExtentions
|
|
{
|
|
public static bool NeedResponseJsonResult(this HttpContext context, Exception? ex = null)
|
|
{
|
|
var routeData = context.GetRouteData();
|
|
var controllerName = routeData?.Values["controller"]?.ToString();
|
|
var actionName = routeData?.Values["action"]?.ToString();
|
|
|
|
MethodInfo? methodInfo = null;
|
|
|
|
if (string.IsNullOrEmpty(controllerName) == false && string.IsNullOrEmpty(actionName) == false)
|
|
{
|
|
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
|
|
{
|
|
Type? controllerType = assembly.GetTypes()?.FirstOrDefault(t => string.Equals(t.Name, $"{controllerName}Controller", StringComparison.OrdinalIgnoreCase));
|
|
if (controllerType != null)
|
|
{
|
|
methodInfo = controllerType.GetMethod(actionName);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (methodInfo == null && ex?.TargetSite != null && ex.TargetSite is MethodInfo methodInfoEx)
|
|
{
|
|
methodInfo = methodInfoEx;
|
|
}
|
|
|
|
return methodInfo != null && methodInfo.ReturnType.Equals(typeof(JsonResult));
|
|
}
|
|
}
|
|
} |