Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件。
系列目录
1、Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行。
2、Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。
3、Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。
4、Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。
5、Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。
6、Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件。
7、Taurus.MVC WebAPI 入门开发教程7:业务逻辑基类LogicBase的使用。
8、Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。
后续还有两个系列:
1、Taurus.MVC 微服务 入门开发教程系列。 2、Taurus.MVC Web应用 入门开发教程系列。
前言:
全局控制器的作用:
1、可接收所有的404请求,做统一处理。 2、可以实现一些公共的全局的事件。
接收404的过程详细的描述:
对于Taurus.MVC中运行的请求,如果没有对应的控制器接收,默认产生404; 如果项目中存在DefaultController全局控制器,则转交给DefaultController。 如果DefaultController没有对应的方法接收,仍产生404。
如果需要对所有的404请求,做统一的处理输出,则可以重载Default方法, 该方法为最终方法,它可以接收所有的404请求。
下面介绍:全局控制器中的全局事件,文件有点类似以前的Global.cs的味道。
全局控制器的完整方法与注释说明:
/// <summary>
/// 全局控制器(适全全局事件处理)
/// </summary>
public class DefaultController : Taurus.Core.Controller
{
/// <summary>
/// 所有寻址不到的请求都集中执行到此方法(不想接收404则删除此重载方法即可)。
/// </summary>
public override void Default()
{
Write("DefaultController : Hello world");
}
/// <summary>
/// 用于所有的请求合法性验证,配合[Ack]属性
/// 启用时:局部的先执行(若存在),无局部才执行全局。
/// </summary>
public static bool CheckAck(IController controller, string methodName)
{
//需要自己实现Ack验证
return !string.IsNullOrEmpty(controller.Query<string>("ack")); } /// <summary>
/// 用于需要登陆后的身份验证,配合[Token]属性
/// 启用时:局部的先执行(若存在),无局部才执行全局。
/// </summary>
public static bool CheckToken(IController controller, string methodName)
{
//需要自己实现,或者通过配置Taurus.Auth启动自带的验证(自带的注释掉此方法即可)。
return !string.IsNullOrEmpty(controller.Query<string>("token"));
} /// <summary>
/// 用于校验微服务的内部身份验证,配合[MicroService]属性
/// 启用时:全局仅此一个生效,局部的失效。
/// </summary>
public static bool CheckMicroService(IController controller, string methodName)
{
return MicroService.Config.ServerKey == controller.Query<string>(MicroService.Const.HeaderKey);
} /// <summary>
/// 全局【路由映射】
/// 启用时:所有请求都进入此地做映射(需要映射时,返回映射的地址;不需要映射的返回空即可)。
/// </summary>
public static string RouteMapInvoke(HttpRequest request)
{
//if (request.Url.LocalPath.StartsWith("/api/") && RouteConfig.RouteMode == 2)
//{
// return "/test" + request.RawUrl;
//}
return string.Empty;
}
/// <summary>
/// 全局【方法执行前拦截】
/// 启用时:先全局,再执行局部(若存在)。
/// </summary>
public static bool BeforeInvoke(IController controller, string methodName)
{
return true;
}
/// <summary>
/// 全局【方法执行后业务】
/// 启用时:先执行局部(若存在),再执行全局。
/// </summary>
public static void EndInvoke(IController controller, string methodName)
{ }
}
全局方法都是静态方法,手写不太方便,对于有全局控制需要的,可以从此处Copy过去要用到的方法,不需要的忽略或注释掉。
下面补充其它说明:
其它1、全局拦截404的方法补充说明:
通过全局拦截后,默认会变成自定义方式:
1、正常处理流程,输出的状态码为200,如果需要返回404状态码,设置输出的状态码即可,如:
public override void Default()
{
Response.StatusCode = 404;
Write("DefaultController : Hello world");
}
2、如果想返回自定义页面,有两种方式:
1、直接读取文件路径,然后Write出去即可。 2、利用小技巧,让它直接触发MVC的页面加载机制即可,按路径存放页面即可:/Views/Default/Default.html。
其它2、全局方法的效用补充说明:
在一个系统中,后续会有一些边缘需求,比如:
1、加强安全校验; 2、方法调用次数的统计; 3、请求日志的记录 4、......
都可以在全局方法中自由发挥,比如在方法结束后:
收集请求参数或处理结果,放置到全局队列中,开个线程在全局定时扫描处理等。
总结:
DefaultController的名字是约定好的,用处也比较实在,一般项目都会用到它。
具体各方法的执行顺序,可以看该方法上的注释。
下一篇介绍:业务逻辑基类LogicBase的使用,还有两篇,将转入微服务系列教程。
Taurus.MVC WebAPI 入门开发教程6:全局控制器DefaultController与全局事件。的更多相关文章
- Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。
前言: Taurus.MVC 微服务版本已经发布了:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. 以前都是框架发布时写点相关功能点的文章,没有形成 ...
- Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC WebAPI 入门开发教程8:WebAPI文档与自动化测试。
系列目录 1.Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:6、微服务间的调用方式:Rpc.StartTaskAsync。
系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:7、微服务节点的监控与告警。
系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
随机推荐
- monit 配置详解(monitrc)
monitrc是Monit的主配置文件(控制文件). monitrc的内容主要分为全局(golbal)和服务(services)两个部分. 默认情况下monitrc文件在/etc/monit目录下. ...
- shellcode编写
shellcode编写 shellcode是一段用于利用软件漏洞而执行的代码,通常使用机器语言编写,其目的往往是让攻击者获得目标机器的命令行shell而得名,其他有类似功能的代码也可以称为shellc ...
- BZOJ4713 迷失的字符串 解题报告
BZOJ4713 题目大意:有 \(n\) 个点 \(n-1\) 条边,每条边有一个字符.给你 \(m\) 个字符串 \(s_i\),问每个字符串是否可以通过树上的一条简单路径表示. \(n,m\le ...
- 如何在 Mac 和虚拟机上安装 macOS Big Sur、Monterey 和 Ventura
请访问原文链接:https://sysin.org/blog/how-to-install-macos/,查看最新版.原创作品,转载请保留出处. 作者主页:www.sysin.org 名词解释: 硬件 ...
- 【题解】Codeforces Round #798 (Div. 2)
本篇为 Codeforces Round #798 (Div. 2) 也就是 CF1689 的题解,因本人水平比较菜,所以只有前四题 A.Lex String 题目描述 原题面 给定两个字符串 \(a ...
- pytorch自定义模型时实现父类构造函数的问题
问题 有的类继承nn.Module在init函数里面是super(类名, self).init():但是有的里面就是super().init() exp: · 解答: python2与python3的 ...
- 13.LAMP架构介绍及配置
LAMP架构介绍及配置 LAMP简介与概述 LAMP概述 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境. LAMP是一 ...
- 【图解源码】Zookeeper3.7源码分析,包含服务启动流程源码、网络通信源码、RequestProcessor处理请求源码
Zookeeper3.7源码剖析 能力目标 能基于Maven导入最新版Zookeeper源码 能说出Zookeeper单机启动流程 理解Zookeeper默认通信中4个线程的作用 掌握Zookeepe ...
- 论文解读(SR-GNN)《Shift-Robust GNNs: Overcoming the Limitations of Localized Graph Training Data》
论文信息 论文标题:Shift-Robust GNNs: Overcoming the Limitations of Localized Graph Training Data论文作者:Qi Zhu, ...
- 疫情在校学生之——用python对某校园热水服务app进行测试,实现自动免费用水(仅供参考)
写在前面的过场话: 本文只是对某校园热水服务app做个测试,其实本人并没有做大坏事,并未传播相关技术,文章以下内容的敏感部分会打码,并且相关厂商已经正在进行漏洞修复,大家看看就好.文章后会提供&quo ...