gpt4 book ai didi

asp.net-web-api - 如何记录在 web api 中的 Controller 中执行的操作方法

转载 作者:行者123 更新时间:2023-12-04 00:30:17 25 4
gpt4 key购买 nike

在 WebAPI 中,无论如何都要记录使用 Action 过滤器调用或执行的 Controller 的 Action 方法的名称。我正在使用 RouteData 属性,如下所示,但操作值不包含任何值。有什么办法可以在过滤器中获取操作名称。

public class LogActionFilter : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
Log(actionExecutedContext.ActionContext.RequestContext.RouteData);

base.OnActionExecuted(actionExecutedContext);
}

private void Log(System.Web.Http.Routing.IHttpRouteData httpRouteData)
{
var controllerName = httpRouteData.Values["controller"];

var actionName = httpRouteData.Values["action"];

var message = String.Format("controller:{0}, action:{1}", controllerName, actionName);

Debug.WriteLine(message, "Action Filter Log");
}
}

最佳答案

您可以在 actionExecutedContext.ActionContext.ActionDescriptor.ActionName 中找到操作名称。属性(字符串)。

你也可以投那个 ActionDescriptorReflectedHttpActionDescriptor并获取 MethodInfo 的实例如果您需要更多信息而不仅仅是字符串名称,那被称为。

 var reflectedActionDescriptor = actionExecutedContext.ActionContext.ActionDescriptor 
as ReflectedHttpActionDescriptor;
//inspect reflectedActionDescriptor.MethodInfo here

关于asp.net-web-api - 如何记录在 web api 中的 Controller 中执行的操作方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26523290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com