我继承了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。有什么办法可以找到此调用的应用程序中的控制器入口点?
答案 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方法中放置一个断点,下一个执行的方法将是您要搜索的方法。