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类,该类用来把当前程序设置相关的提示信息,通过指定页面在客户端浏览器中进行显示;或把用户在指定页面输入的数据信息提交到服务端的服务器中。
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页面到示例程序。
内置管道中间件调用流程详解
说明:
对以上功能更为具体实现和注释见:22-04-17-045_Nop_4.40.4(.NetCore错误处理中间件与日志)。