【转】ABP源码分析三十三:ABP.Web

ABP.Web模块并不复杂,主要完成ABP系统的初始化和一些基础功能的实现。

AbpWebApplication : 继承自ASP.Net的HttpApplication类,主要完成下面三件事
一,在Application_Start完成AbpBootstrapper的初始化。整个ABP系统的初始化就是通过AbpBootstrapper完成初始化的。
二,在Application_BeginRequest设置根据request或cookie中的Culture信息,完成当前工作线程的CurrentCulture和CurrentUICulture的设置。
三,在Application_AuthenticateRequest设置TenantId到claimsIdentity的Claim中。

 

 

 

AbpWebModuleConfiguration/IAbpWebModuleConfiguration: 定义了一个SendAllExceptionsToClients配置项

 

 

AbpWebModule: 继承自AbpModule,完成Abp.Web模块的初始化。初始化主要干两件事:

第一,Register Assembly by convention,这是所有模块都要在初始化完成的动作。

第二,将资源文件中的本地化数据添加到底层框架中的LocalizationManager维护的一个ILocalizationSource对象的字典中。

 

 

 

WebAssemblyFinder : 实现了IAssemblyFinder的GetAllAssemblies方法,用于获取当前web项目所引用的非原生的assembly。

 

WebAuditInfoProvider: 实现了底层框架中的IAuditInfoProvider接口。主要提供BrowserInfo,ClientIpAddress和ClientName。这三个信息来自HttpContext。

 

 

IFeaturesScriptManager/FeaturesScriptManager:用于返回一段javascript代码,该代码中的abp.features包含了当前访问用户的Tenant的所有Feature信息。

IAuthorizationScriptManager/AuthorizationScriptManager :用于返回一段javascript代码,该代码中的abp.auth包含了当前访问用户的所有Permission信息。

IMultiTenancyScriptManager/MultiTenancyScriptManager : 用于返回一段javascript代码,该代码中的abp.multiTenancy包含了当前MultiTenancy的配置信息。

INavigationScriptManager/NavigationScriptManager : 用于返回一段javascript代码,该代码中的abp.nav包含了当前访问用户的所有Navigation信息。

ISessionScriptManager/SessionScriptManager : 用于返回一段javascript代码,该代码中的abp.session包含了当前访问用户的所有session信息(userId,tenantId,impersonatorUserId,impersonatorTenantId,multiTenancySide)。

ISettingScriptManager/SettingScriptManager : 用于返回一段javascript代码,该代码中的abp.setting包含了当前访问用户的所有setting信息

 

 

ErrorInfo:用于封装error的信息

ValidationErrorInfo:用于封装Validation Error的信息

IExceptionToErrorInfoConverter/DefaultErrorInfoConverter : 该接口和其默认的实现用于将CLR的exception转换为ABP中的ErrorInfo。

IErrorInfoBuilder/ErrorInfoBuilder : 该接口和其实现通过调用IExceptionToErrorInfoConverter对象将将CLR的exception转换为ABP中的ErrorInfo。

AjaxResponse /AjaxResponse<object>: 用于封装针对ajax requests的Response信息。

 

返回ABP源码分析系列文章目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#程序打包,同时把netframework也打包进去

“打包,把netframework也打包进去&#xff0c;生成安装文件。 安装PluginInstaller.msi可以在你打包时&#xff0c;把.netframework框架打包进去&#xff0c;然后在安装软件时&#xff0c;提醒你是否要安装.netframework. 安装PluginInstaller.msi后,再打包编译&#xff0c;在你…

html的绝对定位脱离文档流吗,子元素设置绝对定位之后脱离文档流!

子元素设置绝对定位之后脱离文档流之后父容器宽高都为都不撑开了。 很多时候都是宽高都是0&#xff1b;子元素设置绝对定位如何让子元素自己撑开高度&#xff1f;下面的这个子元素设置绝对定位后&#xff0c;父元素宽高都为0 了。 如何让他自己撑开&#xff01;Document* {mar…

【转】ABP源码分析三十四:ABP.Web.Mvc

ABP.Web.Mvc模块主要完成两个任务&#xff1a; 第一&#xff0c;通过自定义的AbpController抽象基类封装ABP核心模块中的功能&#xff0c;以便利的方式提供给我们创建controller使用。 第二&#xff0c;一些常见的基础功能的实现。 AbpController&#xff1a;这是一个抽象基类…

html盒子全部蓝色,彻底弄懂CSS盒子模式之五

三、分析实现方法1&#xff0e;从上面的截图可以看到有一标题&#xff0c;标题下面是一个列表&#xff0c;所以很容易想到用标签和无序列表来做结构&#xff0c;标题是一块有背景的矩形块&#xff0c;文字白色&#xff0c;文字在矩形块中居中对齐&#xff0c;所以给标签加个宽度…

地球化学图解系统GCDPlot 0.33

地球化学 图解 系统GCDPlot 0.33发布&#xff0c;新增了Excel 2007支持。下载 地址&#xff1a;GCDPlot下载GCDPlot 是一个进行地球化学图解、CIPW计算的 Microsoft Excel VBA 程序&#xff0c;GCDPlot 可以使用 Excel 的数据以标准的 Excel 图表格式绘制各类地球化学图解&am…

微软认证及课程简写含义

AZ开头的都是Azure MB开头的课程都是Microsoft Dynamics 365&#xff08;早期叫Microsoft Business Solution&#xff09;的课程 MS开头的课程都是Microsoft 365的课程 M365主要是还集合了win10 autopilot这些 M365是指包括windows在内得所有得Microsoft产品做一站…

浅析PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)

对于Microsoft .net PetShop程序中的购物车和订单处理模块&#xff0c;文中主要分析两种技术的应用&#xff1a; 1. Profile技术在PetShop程序中用于三处&#xff1a; 1) 购物车ShoppingCart &#xff0d;下面的例子围绕购物车流程进行 2) 收藏WishList 3) 用户信息AccountI…

html5设置视频显示第一帧,如何检测HTML5视频何时播放第一帧?

还有另一种方法可以使用currentTime并为视频更改的每个时间定义一个函数。在HTML5视频元素顶部设置div&#xff0c;并在currentTime在3到4秒之间时修改该元素。示例代码应该是这样的&#xff1a;HTML&#xff1a;Your browser does not support HTML5 video.CSS&#xff1a;#vi…

maven 公共模块依赖_「spring-boot 源码解析」spring-boot 依赖管理

问题maven 工程&#xff0c;依赖管理是非常基本又非常重要的功能&#xff0c;现在的工程越来越庞大&#xff0c;依赖越来越多&#xff0c;各种二方包、三方包太多太多&#xff0c;依赖冲突处理起来真是让人头疼&#xff0c;经常需要涉及到多个地方需要调整。微信公众号&#xf…

【转】ABP源码分析三十五:ABP中动态WebAPI原理解析

动态WebAPI应该算是ABP中最Magic的功能之一了吧。开发人员无须定义继承自ApiController的类&#xff0c;只须重用Application Service中的类就可以对外提供WebAPI的功能&#xff0c;这应该算是对DRY的最佳诠释了. 如下图所示&#xff0c;一行代码就为所有实现了IApplicationSer…

计算机科学与探索 影响因子,《计算机科学与探索》国家级计算机期刊投稿论文发表...

《计算机科学与探索》国家级计算机期刊投稿论文发表《计算机科学与探索》杂志简介-是不是正规期刊&#xff1a;《计算机科学与探索》是由中华人民共和国工业和信息化部主管、华北计算技术研究所361期刊网主办的国内外公开发行的计算机学报级高级学术期刊&#xff0c;中国计算机…

如何将SAP数据传输到其他系统(Transferring Data from SAP to Other Systems)

在sap里有GUI_DOWNLOAD 函数将sap的数据下载到客户端机器&#xff08;presentation server&#xff09;&#xff0c;而Dataset则是将数据传输到应用服务器&#xff08;Application server&#xff09;。然而在有些时候需要将数据传输到第三方其他系统(3rd Party System)&#x…

jstl处理栏目与子栏目_Detelogy智能前处理设备微展厅P2:再添新品

时隔小半年&#xff0c;新一轮Detelogy产品总览展示栏目再与大家见面。事不宜迟&#xff0c;点击视频即刻进入我们的智能前处理设备微展厅。 知乎视频​www.zhihu.com01 高效多样品前处理系统02 智能浓缩设备全系列03 智能湿法消解设备应用领域农残、兽残检测有机磷类、有机氯类…

【转】ABP源码分析三十六:ABP.Web.Api

这里的内容和ABP 动态webapi没有关系。除了动态webapi&#xff0c;ABP必然是支持使用传统的webApi。ABP.Web.Api模块中实现了一些同意的基础功能&#xff0c;以方便我们创建和使用asp.net webApi。 AbpApiController&#xff1a;这是一个抽象基类&#xff0c;继承自ApiControl…

408最后计算机网络题库,2021考研计算机统考408专业基础综合题库

**部分为历年考研真题。提供2009&#xff5e;2018年考研真题及参考答案&#xff0c;其中2009&#xff5e;2015年每道真题均提供详细答案解析&#xff0c;通过对真题的演练和分析&#xff0c;可以帮助学员牢牢抓住计算机学科专业基础综合考试的命题特点&#xff0c;提高复习效率…

Unity-Shader-渲染队列,ZTest,ZWrite

Unity-Shader-渲染队列&#xff0c;ZTest&#xff0c;ZWrite ZTest&#xff08;深度测试&#xff09;和ZWrite&#xff08;深度写入&#xff09;ZTest Less&#xff08;深度小于当前缓存则通过&#xff09;ZTest Greater&#xff08;深度大于当前缓存则通过&#xff09;ZTest L…

如何做好职业规划(乾卦)

职业一般来说会占用我们每个人生命中的大部分时间&#xff0c;而职业发展中变化莫测的因数常常令我们束手无策、捉襟见肘。在面对变化多端的情况时&#xff0c;中国人的传统智慧就发挥出最大的优势了。如何将快速变化 、不好掌控的事情处理得井井有条&#xff0c;这需要我们懂得…

850是什么意思_沃尔沃为什么不是一线豪华品牌?

1927年诞生的沃尔沃&#xff0c;它造车的历史比宝马还要略早几年。但经过近百年的发展&#xff0c;宝马品牌无论在国际上还是我们国内&#xff0c;以销量还是品牌含金量来看&#xff0c;都是众所公认的豪华品牌第一阵营成员&#xff08;奔驰、宝马&#xff0c;奥迪&#xff09;…

【转】ABP源码分析三十七:ABP.Web.Api Script Proxy API

ABP提供Script Proxy WebApi为所有的Dynamic WebApi生成访问这些WebApi的JQuery代理&#xff0c;AngularJs代理以及TypeScriptor代理。这些个代理就是javascript脚本,通过这些代理可以简单的访问Dynamic webApi。 如下实例演示一个最基本的应用场景。首先通过Script Proxy Web…

repeater导出excel html,Repeater显示数据,并且导出到excel

我的数据是自己手工生产&#xff0c;然后repeater绑定&#xff0c;最后导出excel&#xff0c;但出现问题&#xff0c;谁可以给个例子什么的没有。关键代码如下&#xff1a;protected void LinkButton1_Click(object sender, EventArgs e){string time DateTime.Now.ToString(&…