xiao1star2026-02-28文章来源:SecHub网络安全社区
.NET到底是个什么东西呢,ASP.NET是一个网站开发的技术,是.NET框架中的一个应用模型,用于生成基于Web的应用程序的内容丰富的编程框架。使用ASP.NET开发Web应用程序并维持其运行,比其他开发语言更加简单,编译成功之后其实就是一些.dll文件
.NET网站一般都是搭配的是SqlServer,使用C#语言写的.NET都是在Windows系统下写的.NET一般使用的IIS中间件Global.asax:用于处理应用程序级别的事件,例如应用程启动(Application_Start)Web.config:用于ASP.NET应用程序的主要配置文件,用于定义应用程序的配置文件,类比于java中的application.yml文件bin文件放置了编译好的DLL文件,是后端服务接口代码的存放位置例如.java文件编译完之后为.class文件,其一般放置在classs文件中,而我们的.NET文件一般为.cs其编译好后为.dll文件,这些文件是放在bin目录下vs studio 2017:https://link.zhihu.com/?target=https%3A//aka.ms/vs/15/release/vs_community.exe)
sqlserver:SQL Server 下载 | Microsoft
SSMS:https://learn.microsoft.com/zh-cn/ssms/install/install?redirectedfrom=MSDN
dnspy:Release v6.1.8 · dnSpy/dnSpy · GitHub
如上是安装地址、安装教程请自行网上搜索
什么是非框架呢
非框架其实就不是按照MVC框架来写的,我们可以根据项目结构来直接访问某个页面,例如一个aaa.html在xxx/xxx的目录下,那么我们直接访问http://IP/xxx/xxx/aaa.html即可,这就是非框架的直接体现
文件->新建->项目


选择Web窗体

成功创建了一个非框架的项目,可以清晰的看到Gobal.asax以及Web.config文件

直接运行得到如下页面

我们访问/about页面也就对应了我们项目中的about.aspx文件的内容,这种直接访问的方式就是非框架

ok现在知道了相关的前端文件,根据前端代码来找到后端代码呢,如下图所示
CodeBehind="About.aspx.cs" Inherits="WebApplication3.About"
这个指出了我们的后端代码为About.aspx.cs,在WebApplication3下

也就是这里

也就是这个代码里面但是目前这个类中的方法没有任何东西,我们可以添加一些代码测试一下

修改代码如下,当我们访问about页面的时候,在文本框中输入相关信息接着就会传递给.cs中ButtonSubmit_Click方法然后再将结果返回,这就再一次证明了about.aspx的后端为About.aspx.cs
.cs文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication3
{
public partial class About : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LabelTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
}
protected void ButtonSubmit_Click(object sender, EventArgs e)
{
// 显示用户反馈
string feedback = TextBoxFeedback.Text;
LabelTime.Text = "Thank you for your feedback: " + feedback;
}
}
}
.aspx文件
<%@ Page Title="About" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="About.aspx.cs" Inherits="WebApplication3.About" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<h2><%: Title %>.</h2>
<h3>Your application description page.</h3>
<p>Use this area to provide additional information.</p>
<div>
<label for="feedback">Your Feedback:</label>
<asp:TextBox ID="TextBoxFeedback" runat="server"></asp:TextBox>
<asp:Button ID="ButtonSubmit" runat="server" Text="Submit" OnClick="ButtonSubmit_Click" />
</div>
<div>
<h3>Current Date and Time</h3>
<p>Current Time: <asp:Label ID="LabelTime" runat="server"></asp:Label></p>
</div>
</asp:Content>

和前面的一样,只是到这一步了选择MVC

我们可以看到目录结构里面有清晰的Controller```Models``Views这种层次结构

在视图层View中可以看到有前端的页面,但是我们还可以按照之前那样去访问吗,我们可以试试

可以看到直接输入/about直接是404

在App_Date下的RoutConfig.cs中定义了我们的url为
http://ip/{controller}/{action}/{id}


按照这样的话,我们要访问about页面就是http://ip/Home/About,可以看到访问成功

在代码审计中我们获得到的源码一般情况下都是编译好的.dll文件
可以将我们还有.dll的bin文件全部拖到程序集资源管理器中


这个是一个框架的项目,我们可以直接全局搜索RegisterRoutes来查看其路由的设置

双击进入就可以看到路由的设置了

在 ASP.NET Core MVC 和 Razor Pages 中,以下是一些关键的生命周期方法:
MVC 控制器:
OnActionExecuting:在动作方法执行前触发。OnActionExecuted:在动作方法执行后触发。OnResultExecuting:在结果执行前触发。OnResultExecuted:在结果执行后触发。Razor Pages:
OnGet:在页面加载时触发,用于获取数据。OnPost:在表单提交时触发,用于处理 POST 请求。OnPage:在页面生命周期的开始时触发,用于初始化数据或设置页面状态。RenderBody:用于指定页面主体内容ASP.NET Web Forms
OnInit:在 ASP.NET Web Forms 中,OnInit 事件在页面加载时触发,但它是在 Page_Load 事件之前发生的。OnInit 通常用于初始化那些不需要在 Page_Load 中处理的控件属性
OnLoad 是 ASP.NET Web Forms 页面生命周期中的一个事件,OnLoad 事件在页面加载到服务器时触发,这发生在页面生命周期的开始阶段,通常用于初始化数据或设置页面的初始状态。