ASP网站如何将dll与网页匹配?

the*_*oop 1 .net asp.net iis asp.net-mvc webdev.webserver

当你转到ASP网站的根目录(webforms或MVC)时,web服务器如何知道要加载哪个.aspx或.cshtml文件,以及bin/目录中哪个dll 包含要执行的代码?它如何与两者相匹配?

bal*_*dre 5

我不知道你是在寻找一个非常技术性的答案,还是一个简单的概述.所以,这是一个简单的概述.

默认文件

当你去ASP网站的根目录

ASP,HTML,PHP或您使用的任何技术,Web服务器都知道要搜索的默认文档,并在没有提供文档时显示,例如,在Microsoft IIS Server中,默认文档是:

在此输入图像描述

这对于Apache服务器来说是相同的,有一个设置告诉服务器"如果你没有文件名,请使用这个"设置,这个设置在.htaccess文件中找到并具有:

DirectoryIndex  index.php index.html index.htm default.html default.htm home.html
Run Code Online (Sandbox Code Playgroud)

在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
);
Run Code Online (Sandbox Code Playgroud)

如果这表明,如果没有提供路线,它将与之相同/Home/Index.

大会

关于DLLs部分,关于你的第一份文件......

.NET站点是预编译的,并公开了它们的名称空间和属性,你将在ASP.NET Webforms中,在第一行代码中这样:

<%@ Page Title="Home Page" Language="C#" 
    MasterPageFile="~/Site.Master" 
    AutoEventWireup="true" 
    CodeBehind="Default.aspx.cs" 
    Inherits="WebApplication3._Default" %>
Run Code Online (Sandbox Code Playgroud)

这告诉服务器运行WebApplication3._Default内部Default.aspx.cs,从那里,它将附加任何所需的程序集来运行代码.