第45章 .NetCore错误处理中间件与日志

第45章 .NetCore错误处理中间件与日志_第1张图片

 120 VendorSettings、MessagesSettings、CheckAccessClosedStoreAttribute、CheckAccessPublicStoreAttribute、CheckLanguageSeoCodeAttribute、ValidateCaptchaAttribute、ErrorHandlerStartup、ErrorController、CommonController

    VendorSettings类,通过该类及其属性成员实例,设定与供应商相关的一些默认数据值,并把这些数据值持久化存储到数据库的设置表中,管理员可以修改这些数据值,使当前程序可以根据管理员的需求进行定制。

    MessagesSettings类,通过该类及其属性成员实例,设定与消息相关的一些默认数据值,并把这些数据值持久化存储到数据库的设置表中,管理员可以修改这些数据值,使当前程序可以根据管理员的需求进行定制。

    CheckAccessClosedStoreAttribute类,对标记了“[CheckAccessClosedStore]”行为方法成员,如果1个指定用户被授权了访问关闭网店相应页面的权限,则可以访问关闭网店相应页面(主要针对该网店的拥有者);如果1个指定用户没有被授权了访问关闭网店相应页面的权限,则当前程序会所该用户的访问重定定向到“商城关闭”信息提示页面(与404错误提供页面的功能相同)。

    CheckAccessPublicStoreAttribute类,对标记了“[CheckAccessPublicStore]”行为方法成员,用来验证个指定控件器的1个指定行为方法所对应的页面,是否是指定网店用户所公开的连接页面(例如:联系我们等),如果是,则可以通过其它指定页面中的链接控件直接访问这些网店用户所公开的页面。

CheckLanguageSeoCodeAttribute类,对标记了“[CheckLanguageSeoCode]”行为方法成员,把1个指定控件器的1个指定行为方法所对应的网络地址字符串(URL)中包含搜索引擎优化本地化代码。

ValidateCaptchaAttribute类,对标记了“[ValidateCaptcha]”行为方法成员,且启用了googleRecaptcha图片验证服务,在指定页面,连接到googleRecaptcha图片指定的验证服务,来验证指定页面中用户对验证图片的操作是否正确,并返回验证的结果。

ErrorHandlerStartup类,  把自定义错误处理管道中间件,集成(安装)到.NetCore框架的内置管道和依赖注入中间件实例中,为当前程序中添加相应的错误处理功能。

ErrorController类,通过Http状态码去判断当前HTTP的异常状态(这些异常状态由HTTP标准所定义。这里主要指:500错误状态),并根据异常状态,重定向到自定义的错误信息提示页面(用于提升用户体验)。

CommonController类,该类用来把当前程序设置相关的提示信息,通过指定页面在客户端浏览器中进行显示;或把用户在指定页面输入的数据信息提交到服务端的服务器中。

  1. 取消Nop.Services.Installation.InstallationService.InstallSettingsAsync.VendorSettings设置前的注释。
  2. 取消Nop.Services.Installation.InstallationService.InstallSettingsAsync.CurrencySettings设置前的注释。
  3. 取消Nop.Services.Installation.InstallationService.InstallSettingsAsync.MeasureSettings设置前的注释。
  4. 取消Nop.Services.Installation.InstallationService.InstallSettingsAsync.WidgetSettings设置前的注释。
  5. 取消Nop.Services.Installation.InstallationService.InstallSettingsAsync.MessagesSettings设置前的注释。

6、重构Nop.Web.Framework.Infrastructure.Extensions.ApplicationBuilderExtensions,取消对下列方法的注释:

UseNopExceptionHandler

UsePageNotFound

UseBadRequestResult

7、重构Nop.Web.Infrastructure.RouteProvider.RegisterRoutes方法,取消对下列语句的注释:

  //ErrorPage.htm页面的路由映射。

            endpointRouteBuilder.MapControllerRoute(name: "Error",

                pattern: $"error",

                defaults: new { controller = "Common", action = "Error" });

  //404页面的路由映射。

            endpointRouteBuilder.MapControllerRoute(name: "PageNotFound",

                pattern: $"{lang}/page-not-found",

                defaults: new { controller = "Common", action = "PageNotFound" });

8、复制\Nop.Web\Views\Common\PageNotFound.cshtml页面到示例程序。

9、复制\Nop.Web\wwwroot\ErrorPage.htm页面到示例程序。

内置管道中间件调用流程详解

    说明:

  1. 在.Net(Core)框架中必要内置管道中间件方法是:Routing和Endpoints,虽然在.Net6框架对内置管道中间件的定义实现进行了大改,但是依然是继承于或最终终将调用这两个中间件的实现类。
  2. 在.Net(Core)框架中, 内置管道中间件所针对的对象是终端用户和服务器端程序本身,所以内置管道中间件中所调用的各种中间件方法,都必须被注入到内置依赖注入容器中(有些管道中间件是被隐式的集成在.Net(Core)框架中的);而内置依赖注入器中的注入方法,则不需要完全的被内置管道中间件所调用,最为典型的代表就是数据库交接中间件,因为该中间件只与当前程序相关而与终端用户无关。内置管道中间件的调用相当于净水器中各种不同功能滤芯的安装环节;内置依赖注入容器的定义相当于,净水器(包含各种不同功能滤芯)的生产调教环节,即不需要全部安装所有的零件,但是需要全部的生产所有的零件。
  3. 内置管道中间件方法的定义是根据固定的方法模版进行定义的,该方法实现的核心技术是Next(参数实例:Func,返回值委托方法),与中间件方法功能实现最为相似的方法是递归方法,可以把内置管道中间件方法看成递归方法特殊变形;也可以这样理解:内置管道中间件方法的实现参考了递归方法。

第45章 .NetCore错误处理中间件与日志_第2张图片

 对以上功能更为具体实现和注释见:22-04-17-045_Nop_4.40.4(.NetCore错误处理中间件与日志)。

你可能感兴趣的:(.netcore,Web开发,nopCommerce)