当前位置: 首页 > news >正文

ASP.NET Core----基础学习03----开发者异常页面 MVC工作原理及实现

文章目录

      • 1. 开发者异常页面
        • (1)Startup.cs 页面的基础配置
        • (2)自定义显示报错代码的前后XX行
      • 2. MVC 的原理
      • 3. MVC 的实现
      • 4.默认路由路径
      • 5.返回Json字符串

1. 开发者异常页面

(1)Startup.cs 页面的基础配置

namespace ASP.Net_Blank
{public class Startup{private readonly IConfiguration _configuration;public Startup(IConfiguration iconfiguration){_configuration = iconfiguration;}public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger){// app.UseDeveloperExceptionPage() 这个调用需要在中间件使用之前调用,否者中间件运行过程中的报错可能无法显示出来。if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseFileServer();app.UseStaticFiles();app.Run(async (context) =>{throw new Exception("This is an Error");await context.Response.WriteAsync("third MiddleWare");});}}
}

如下红框中是核心添加的代码:
在这里插入图片描述

出错代码的具体位置:
在这里插入图片描述

如果请求的url包含参数的显示:
在这里插入图片描述


请求的Headers信息头:
在这里插入图片描述


(2)自定义显示报错代码的前后XX行
# Startup.cs 文件详情namespace ASP.Net_Blank
{public class Startup{private readonly IConfiguration _configuration;public Startup(IConfiguration iconfiguration){_configuration = iconfiguration;}public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger){if (env.IsDevelopment()){DeveloperExceptionPageOptions developerExceptionPageOptions = new DeveloperExceptionPageOptions();developerExceptionPageOptions.SourceCodeLineCount = 3;      // 设置代码报错行的前后3行显示出来app.UseDeveloperExceptionPage(developerExceptionPageOptions);}app.UseFileServer();app.UseStaticFiles();app.Run(async (context) =>{throw new Exception("This is an Error");await context.Response.WriteAsync("third MiddleWare");});}}
}

在这里插入图片描述


2. MVC 的原理

  • Model(模型): 包含一组数据的类和管理该数据的逻辑信息
  • View(视图): 包含显示逻辑,用于显示Controller提供给它的模型中的数据
  • Controller(控制器):处理Http请求,调用模型,选择一个视图来呈现该模型。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


3. MVC 的实现


创建Controllers 文件夹并创建控制器(HomeController.cs):

在这里插入图片描述

在这里插入图片描述

HomeController.cs创建好之后,修改为返回string:
在这里插入图片描述

Startup.cs文件添加MVC 服务和调用该服务
在这里插入图片描述

最终的呈现结果:
在这里插入图片描述

4.默认路由路径

通过如上启动的页面,发现访问了http://localhost:5188/ 也到达了/home/index 路径下面的该显示的视图。通过追踪UseMvcWithDefaultRoute方法的源码,可以查看到。

  • 该方法会默认进入到home这个controller(HomeController简称Home), 中的index这个方法中。(不区分大小写),最终返回如上结果。

在这里插入图片描述


5.返回Json字符串

在这里插入图片描述

在这里插入图片描述

相关文章:

ASP.NET Core----基础学习03----开发者异常页面 MVC工作原理及实现

文章目录 1. 开发者异常页面(1)Startup.cs 页面的基础配置(2)自定义显示报错代码的前后XX行 2. MVC 的原理3. MVC 的实现4.默认路由路径5.返回Json字符串 1. 开发者异常页面 (1)Startup.cs 页面的基础配置 namespace ASP.Net_Blank {public class Startup{private readonly IC…...

jvm 07 GC算法,内存池,对象内存分配

01 垃圾判断算法 1.1引用计数算法 最简单的垃圾判断算法。在对象中添加一个属性用于标记对象被引用的次数&#xff0c;每多一个其他对象引用&#xff0c;计数1&#xff0c; 当引用失效时&#xff0c;计数-1&#xff0c;如果计数0&#xff0c;表示没有其他对象引用&#xff0c;…...

ComfyUI入门教程

本文主要介绍了通过源码运行comfyui&#xff0c;默认例子介绍&#xff0c;节点管理器的使用&#xff0c;以及界面汉化。可多参考开源工作流&#xff0c;多加实践&#xff0c;从而掌握comfyui操作。 1.源码运行comfyui 执行命令python main.py如下&#xff1a; 安装numpy 1.x最…...

Flutter TabBar与TabBarView联动及获取当前点击栏目索引

TabBar还有TabBarView都是谷歌flutter官方组件库——Material组件库提供的组件&#xff0c;其中TabBar用于导航切换&#xff0c;TabBarView则是配合其切换显示的对应的视图&#xff0c;官网参考地址&#xff1a;TabBarView class - material library - Dart API。 实现一体联动…...

【区块链+跨境服务】跨境出口电商溯源 | FISCO BCOS应用案例

当前跨境出口电商已成为带动我国外贸发展的中坚力量&#xff0c;尤其疫情特殊时期&#xff0c;成为推动经济增长的一个重要组成 部分。但是跨境出口电商流程长、环节多&#xff0c;且需辗转于不同的服务商以及国家之间&#xff0c;监管与定位也相对困难&#xff0c;容 易出现诸…...

记录一次mysql死锁问题的分析排查

记录一次死锁问题的分析排查 现象 底层往kafka推送设备上线数据应用层拉取设备上线消息,应用层有多个消费者并发执行将设备上线数据同步数据库表pa_terminal_channel日志报&#xff1a;&#xff08;Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: …...

【UE5.1 角色练习】16-枪械射击——瞄准

目录 效果 步骤 一、瞄准时拉近摄像机位置 二、瞄准偏移 三、向指定方向射击 四、连发 效果 步骤 一、瞄准时拉近摄像机位置 打开角色蓝图&#xff0c;在事件图表中添加如下节点&#xff0c;当进入射击状态时设置目标臂长度为300&#xff0c;从而拉近视角。 但是这样切…...

04OLED简介和调试方法

OLED简介和调试方法 调试方式串口调试显示屏调试其他调试方法总结&#xff1a; OLED简介硬件电路OLED驱动函数 keil调试模式进入方法keil调试界面窗口简单功能说明更加强大的功能 调试方式 电脑想看什么变量可以直接打印到屏幕&#xff0c;但是单片机很多时候由于成本和电路结构…...

“LNMP环境搭建实战指南:从零开始配置CentOS 7下的Nginx、MySQL与PHP“

目录 1.前言 2.准备工作 2.1.环境信息 2.2.关闭SELinux和firewalld 3.安装Nginx 3.1.运行以下命令&#xff0c;安装Nginx 3.2.运行以下命令&#xff0c;查看Nginx版本 4.安装MySQL 4.1.更新秘钥 4.2.配置MySQL的YUM仓库 4.3.安装MySQL 4.4.查看MySQL版本 4.5.启动…...

院内导航:如何用科技破解就医找路难题

自2019年开始“院内导航”被纳入医院智慧服务评估体系以来&#xff0c;到2023年改善就医服务升级的部署&#xff0c;每一步都见证了我国医疗卫生体系向智能化、人性化迈进的坚实步伐。 面对庞大复杂的医院环境与日益增长的就诊需求&#xff0c;如何让患者在茫茫人海中迅速找到就…...

C++基础篇(1)

目录 前言 1.第一个C程序 2.命名空间 2.1概念理解 2.2namespace 的价值 2.3 namespace的定义 3.命名空间的使用 4.C的输入输出 结束语 前言 本节我们将正式进入C基础的学习&#xff0c;话不多说&#xff0c;直接上货&#xff01;&#xff01;&#xff01; 1.第一个C程…...

云视频监控中的高效视频转码策略:视频汇聚EasyCVR平台H.265自动转码H.264能力解析

随着科技的快速发展&#xff0c;视频监控技术已经广泛应用于各个领域&#xff0c;如公共安全、商业管理、教育医疗等。与此同时&#xff0c;视频转码技术作为视频处理的关键环节&#xff0c;也在不断提高视频的质量和传输效率。 一、视频监控技术的演进 视频监控技术的发展历…...

xcode配置swift使用自定义主题颜色或者使用RGB或者HEX颜色

要想在xcode中使用自定义颜色或者配置主题色&#xff0c;需要在Assets中配置&#xff0c;打开Assets文件&#xff0c;然后点击添加Color Set&#xff1a; 输入颜色的名称&#xff0c;然后选中这个颜色&#xff0c;会出现两个颜色&#xff1a; Any Appearance表示亮色模式下使用…...

相同含义但不同类型字段作为join条件时注意事项

假设表A和表B中都有表示学号的stu_id字段&#xff0c;但该字段在表A和表B中类型分别为bigint和string。当直接通过该字段进行join时&#xff0c;一般情况下可以得到我们预期的结果。 select a.stu_id from a as r join b as l on r.stu_id l.stu_id 但是如果学号长度较长的…...

数据结构(3.8)——栈的应用

栈在括号匹配中的应用 流程图 代码 #include <stdio.h> #include <stdlib.h> #define MaxSize 10typedef struct {char data[MaxSize];int top; } SqStack;// 初始化栈 void InitStack(SqStack* S) {S->top -1; // 初始化栈顶指针 }// 判空 bool StackEmpty(…...

前端面试题35(在iOS和Android平台上,实现WebSocket协议有哪些常见的库或框架?)

在iOS和Android平台上&#xff0c;实现WebSocket协议有许多成熟且被广泛使用的库和框架。下面是一些推荐的选项&#xff1a; iOS 平台 SocketRocket 简介&#xff1a;这是由Facebook开源的库&#xff0c;专门为iOS和Mac OS X设计&#xff0c;提供WebSocket连接的功能。它基于S…...

Mysql如何高效ALTER TABL

ALTER TABLE 缺点 MySQL 的ALTER TABLE 操作的性能对大表来说是个大问题。 MySQL MySQL 执行大部分修改表结构操作的方法是用新结构的 创建一个&#xff0c;空表从旧表中查出所有数据插入&#xff0c;新表然后删除旧。表这样操作可能需要花费很长&#xff0c;时间 如内果存不…...

vue3+vite搭建第一个cesium项目详细步骤及环境配置(附源码)

文章目录 1.创建vuevite项目2.安装 Cesium2.1 安装cesium2.2 安装vite-plugin-cesium插件&#xff08;非必选&#xff09;2.3 新建组件页面map.vue2.4 加载地图 3.完成效果图 1.创建vuevite项目 打开cmd窗口执行以下命令&#xff1a;cesium-vue-app是你的项目名称 npm create…...

LiteOS增加执行自定义源码

开发过程注意事项&#xff1a; 源码工程路径不能太长 源码工程路径不能有中文 一定要关闭360等杀毒软件&#xff0c;否则编译的打包阶段会出错 增加自定义源码的步骤: 1.创建源码目录 2. 创建源文件 新建myhello目录后&#xff0c;再此目录下再新建源文件myhello_demo.c 3. 编…...

《Nature》文章:ChatGPT帮助我学术写作的三种方式

图片翻译 ** 文章内容** 忏悔时间&#xff1a;我使用生成式人工智能&#xff08;AI&#xff09;。尽管在学术界关于聊天机器人是积极力量还是消极力量的争论不休&#xff0c;但我几乎每天都使用这些工具来完善我所写论文中的措辞&#xff0c;并寻求对我被要求评估的工作进行替…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...