当您访问ASP网站的根目录(webforms或MVC)时,Web服务器如何知道要加载哪个.aspx或.cshtml文件,以及bin/
目录中的哪个dll包含代码执行?它如何与两者相匹配?
答案 0 :(得分:5)
我不知道您是否正在寻找非常技术性的答案或简单的概述。所以,这是简单概述。
当你转到ASP网站的根目录时
ASP,HTML,PHP或您使用的任何技术,Web服务器知道要搜索的默认文档,并在没有提供文档时显示,例如,在Microsoft IIS Server中,默认文档为:
对于Apache服务器来说,这是相同的,有一个设置告诉服务器“如果你没有文档名,请使用这个”设置,这个设置可以在.htaccess
文件中找到并具有:
DirectoryIndex index.php index.html index.htm default.html default.htm home.html
在ASP.NET MVC中,您使用路由表,它位于提到路由的Global.asax
文件中,可以通过直接指定路由或调用外部文件(类),并且常用路由是:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
如果这表明,如果没有提供路线,它将与/Home/Index
相同。
关于DLL
部分,关于你的第一份文件......
.NET站点是预编译的,并公开了它们的名称空间和属性,您将在ASP.NET Webforms中看到第一行代码中的类似内容:
<%@ Page Title="Home Page" Language="C#"
MasterPageFile="~/Site.Master"
AutoEventWireup="true"
CodeBehind="Default.aspx.cs"
Inherits="WebApplication3._Default" %>
这告诉服务器在WebApplication3._Default
内运行Default.aspx.cs
,并从那里附加任何所需的程序集来运行代码。