Düşünebilmemin tek yolu, StackFrame sınıfını kullanmaktır. Performansla ilgili kritik kodla uğraşıyorsanız bunu tavsiye etmem ama bunu kullanabilirsiniz. Tek sorun şu ki, StackFrame size bu noktaya kadar çağrılmış olan tüm yöntemleri sunar, ancak bunlardan hangisinin Action yöntemi olduğunu belirlemenin kolay bir yolu yoktur, fakat belki de sizin durumunuzda, Eylem'in kaç katmanı olacağını bilirsiniz. olmak. "Eylem" rotanız gerekli bir parçası değilse,
var actionName = ControllerContext.RouteData.GetRequiredString("action");
Veya: Böyle Denetleyiciniz sınıf içinde rota verilerine erişebilir
[HandleError]
public class HomeController : Controller
{
public void Index()
{
var x = ShowStackFrame();
Response.Write(x);
}
private string ShowStackFrame()
{
StringBuilder b = new StringBuilder();
StackTrace trace = new StackTrace(0);
foreach (var frame in trace.GetFrames())
{
var method = frame.GetMethod();
b.AppendLine(method.Name + "<br>");
foreach (var param in method.GetParameters())
{
b.AppendLine(param.Name + "<br>");
}
b.AppendLine("<hr>");
}
return b.ToString() ;
}
}