Filter配置
在SdudentApiServiceModule模块创建ExceptionFilter类,代码如下:
publicclassExceptionFilter: IExceptionFilter, ITransientDependency { publicboolAllowMultiple=> true; publicasyncTaskExecuteExceptionFilterAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken) { awaitTask.Run(()=> { if(actionExecutedContext == null) { return; } if(actionExecutedContext.Exception== null) { return; } //记录actionExecutedContext.Exception }); } }
在SdudentApiServiceModule类的PostInitialize里配置Fliter。
publicoverridevoidPostInitialize() { GlobalConfiguration.Configuration.Filters.Add(newExceptionFilter()); }
模块依赖
依照上文,在创建一个TeacherApi模块,然后修改Global的启动模块为TeacherApiServiceModule,然后引入SdudentApi项目。
然后编写TeacherApiServiceModule代码如下:
[DependsOn(typeof(Abp.WebApi.AbpWebApiModule), typeof(SdudentApiServiceModule))] publicclassTeacherApiServiceModule: AbpModule { privatereadonlySdudentApiServiceModule_SdudentApiServiceModule; publicTeacherApiServiceModule(SdudentApiServiceModule sdudentApiServiceModule) { _SdudentApiServiceModule= sdudentApiServiceModule; } publicoverridevoidPreInitialize() { Configuration.Modules.AbpWeb().AntiForgery.IsEnabled= false; Configuration.Modules.AbpWebCommon().SendAllExceptionsToClients= true; } publicoverridevoidInitialize() { IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); Configuration.Modules.AbpWebApi().DynamicApiControllerBuilder .ForAll<IApplicationService>(Assembly.GetAssembly(typeof(TeacherApiServiceModule)), "Sdudent").Build(); } publicoverridevoidPostInitialize() { var ret =_SdudentApiServiceModule.GetSdudent(); Console.WriteLine(ret); } publicoverridevoidShutdown() { } }
如上代码所示,我们在DependsOn上追加SdudentApiServiceModule依赖,然后在TeacherApiServiceModule的构造函数里,使用SdudentApiServiceModule类型参数,然后运行时参数就会被实例化,并注入进来。
现在我们访问TeacherApi的访问,把TeacherApiServiceModule模块调用起来,看下模块的PostInitialize里,是否成功调用了SdudentApiServiceModule模块的方法,
如上图,依赖调用成功。
Swagger配置
Nuget搜索Swashbuckle.core。
模块下添加函数
privatevoidConfigureSwaggerUi() { Configuration.Modules.AbpWebApi().HttpConfiguration .EnableSwagger(c => { c.SingleApiVersion("v1", "文档"); c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); }) .EnableSwaggerUi(); }
然后在Initialize()里调用该函数,配置完成。
然后运行项目,输入swagger/ui/index,如下图:
代码已经传到Github上了,欢迎大家下载。
github地址:https://github.com/kiba518/ApbWebApi
本文作者:kiba518,全栈.Net软件工程师
声明:本文为 脚本之家专栏作者 投稿,未经允许请勿转载。