我正在学习围绕 MVC 4 应用程序的方法,但对 mvc 平台还是陌生的。如果我正在学习一个新的 java 应用程序,我会从 main 方法开始阅读代码并从那里开始。asp.net mvc 应用程序的模拟是什么?
我从以下 URL 启动应用程序:http://server/directory/home?iv-user=tuser
我正在学习围绕 MVC 4 应用程序的方法,但对 mvc 平台还是陌生的。如果我正在学习一个新的 java 应用程序,我会从 main 方法开始阅读代码并从那里开始。asp.net mvc 应用程序的模拟是什么?
我从以下 URL 启动应用程序:http://server/directory/home?iv-user=tuser
Global.asax.cs
有 start 方法的文件Application_Start
可能就是您要查找的文件。那是应用程序启动时运行的代码。
protected void Application_Start()
{
...
RouteConfig.RegisterRoutes(RouteTable.Routes);
...
}
但是查看您发布的网址可能是HomeController
orDirectoryController
文件。不幸的是,我无法从您的路线中看出这一点。
示例路由注册代码如下所示,我们可以在其中看到
URL /{controller}/{action}/{id}
controller/action/id 的默认值是 Home/Index/optional
因此,如果您使用起始 url as 运行您的网络http://localhost:52763/
,它确实会调用http://localhost:52763/Home/Index
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
它是 HTTP。正如您在上面指定的那样,您向 Web 服务器请求资源,控制器会响应。
因此,在 ASP.NET MVC 中,您有多个入口点:每个操作方法。
global.asax.cs 中有一个application_start()
方法。至于控制器对请求的关注,它从控制器的构造函数开始,然后是请求动作的方法。
在您给出的情况下,如果您想找到执行的非框架代码的第一位,您将HomeController.cs
在Controllers
目录中查找并查找将接受参数的Index
or方法。Default
iv-user
要查看完整的页面生命周期,请查看此处:http ://www.red-gate.com/products/dotnet-development/ants-performance-profiler/entrypage/be-ahead-of-the-game-poster2 。这会将您从传入的 HTTP 请求带到最终呈现的视图。
P.Campbell 先生是对的。有关更多详细信息,请查看:http: //msdn.microsoft.com/en-us/library/dd381612 (v=vs.98).aspx
我复制了它的主要内容:
了解 MVC 应用程序执行
对基于 ASP.NET MVC 的 Web 应用程序的请求首先通过 UrlRoutingModule 对象,该对象是一个 HTTP 模块。该模块解析请求并执行路由选择。UrlRoutingModule 对象选择与当前请求匹配的第一个路由对象。(路由对象是一个实现 RouteBase 的类,通常是 Route 类的一个实例。)如果没有匹配的路由,UrlRoutingModule 对象什么也不做,让请求回退到常规的 ASP.NET 或 IIS 请求处理。UrlRoutingModule 对象从选定的 Route 对象中获得一个实现 IRouteHandler 接口并与 Route 对象关联的对象。通常,在 MVC 应用程序中,这将是 MvcRouteHandler 类的一个实例。MvcRouteHandler 实例创建一个实现 IHttpHandler 接口的 MvcHandler 对象。然后 MvcHandler 对象选择最终处理请求的控制器。有关详细信息,请参阅 ASP.NET 路由。
起点是 program.cs 文件中的 public static void Main(string[] args) {...} 。