如何找出在我的MVC应用程序中调用API的方法?

时间:2018-12-06 21:06:12

标签: asp.net-mvc visual-studio api

我继承了MVC应用程序,通常可以推断出API调用的位置,但是这次我很困惑。 API调用信息:

Request URL: http://localhost:3100/api/account 
Request Method: GET 
Status Code: 200 OK

RouteConfig看起来像这样:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

Global.asax具有:

private const string _WebApiPrefix = "api";
private static string _WebApiExecutionPath = String.Format("~/{0}", _WebApiPrefix);

private static bool IsWebApiRequest()
{
    return HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.StartsWith(_WebApiExecutionPath);
}

我不太确定还有什么地方。我找不到任何AccountController。有什么办法可以找到此调用的应用程序中的控制器入口点?

1 个答案:

答案 0 :(得分:0)

为所有控制器创建一个动作过滤器。

public class LogFilter : ActionFilterAttribute
{
      public override void OnActionExecuting(HttpActionContext actionContext)
      {
         Debug.WriteLine(string.Format("Action {0} on Controller {1}", actionContext.ActionDescriptor.ActionName, actionContext.ControllerContext.ControllerDescriptor.ControllerName));
      }
}

global.asax.cs上的

protected void Application_Start()
{
   GlobalConfiguration.Configuration.Filters.Add(new LogFilter());
}

只需输入“ http://localhost:3100/api/account”后检查控制台即可。它将记录动作和控制器。或在OnActionExecuting方法中放置一个断点,下一个执行的方法将是您要搜索的方法。