webapi Swagger 配置 services.BuildServiceProvider() 报警 ASP0000 问题处理
问题起源
网上的常见配置 Swagger 配置 在Startup类的 ConfigureServices 使用 services.BuildServiceProvider() ,其中有段代码如下:
var provider = services.BuildServiceProvider().GetRequiredService<IApiVersionDescriptionProvider>();
会报 ASP0000,大致意思是:从应用程序代码调用"BuildServiceProvider"会导致正在创建的单个服务的额外副本。将依赖项注入服务等替代方法视为"配置"的参数。详细解释
大概意思明了了,那如何处理呢?
处理方法
原代码示例
services.AddSwaggerGen(options =>
{
options.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
var provider = services.BuildServiceProvider().GetRequiredService<IApiVersionDescriptionProvider>();
// 添加文档信息
foreach (var item in provider.ApiVersionDescriptions)
{
// 添加文档信息
options.SwaggerDoc(item.GroupName, new OpenApiInfo
{
Version = item.ApiVersion.ToString(),
Title = Config.SiteInfo.ApiSiteName,
Description = Config.SiteInfo.ApiSiteDesc,
Contact = new OpenApiContact
{
Name = Config.SiteInfo.ApiContactName,
Email = Config.SiteInfo.ApiContactEmail,
}
});
}
//需要设置api的项目属性,生成中输出xml文件
var xmlPath = Path.Combine(AppContext.BaseDirectory, $"{AppDomain.CurrentDomain.FriendlyName}.xml");
options.IncludeXmlComments(xmlPath);
});
修改后的代码
services.AddSwaggerGen();
services.AddOptions<SwaggerGenOptions>()
.Configure<IApiVersionDescriptionProvider>((options, service) =>
{
options.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
// 添加文档信息
foreach (var item in service.ApiVersionDescriptions)
{
// 添加文档信息
options.SwaggerDoc(item.GroupName, new OpenApiInfo
{
Version = item.ApiVersion.ToString(),
Title = Config.SiteInfo.ApiSiteName,
Description = Config.SiteInfo.ApiSiteDesc,
Contact = new OpenApiContact
{
Name = Config.SiteInfo.ApiContactName,
Email = Config.SiteInfo.ApiContactEmail,
}
});
}
//需要设置api的项目属性,生成中输出xml文件
var xmlPath = Path.Combine(AppContext.BaseDirectory, $"{AppDomain.CurrentDomain.FriendlyName}.xml");
options.IncludeXmlComments(xmlPath);
});
注意
Config.SiteInfo 是我项目中的封装的一个静态属性的类,大家可以根据自己情况做相应处理。
webapi Swagger 配置 services.BuildServiceProvider() 报警 ASP0000 问题处理的更多相关文章
- .NetCore WebApi——Swagger简单配置
在前后端分离的大环境下,API接口文档成为了前后端交流的一个重点.Swagger让开发人员摆脱了写接口文档的痛苦. 官方网址:https://swagger.io/ 在.Net Core WebApi ...
- .NetCore WebApi —— Swagger版本控制
目录: .NetCore WebApi——Swagger简单配置 .NetCore WebApi——基于JWT的简单身份认证与授权(Swagger) .NetCore WebApi —— Swagge ...
- 一、Swagger配置
一.Swagger配置 1.注解不显示 SwaggerConfig文件下 //c.IncludeXmlComments(GetXmlCommentsPath()): 内下面添加: c.Inclu ...
- 尝试从零开始构建我的商城 (二) :使用JWT保护我们的信息安全,完善Swagger配置
前言 GitHub地址 https://github.com/yingpanwang/MyShop/tree/dev_jwt 此文对应分支 dev_jwt 此文目的 上一篇文章中,我们使用Abp vN ...
- 《Asp.Net Core3 + Vue3入坑教程》-Net Core项目搭建与Swagger配置步骤
简介 <Asp.Net Core3 + Vue3入坑教程> 此教程仅适合新手入门或者前后端分离尝试者.可以根据图文一步一步进操作编码也可以选择直接查看源码.每一篇文章都有对应的源码 教程后 ...
- .Net Webapi Swagger增加登录功能
.mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...
- Asp.Net WebApi Swagger终极搭建
[PS:原文手打,转载说明出处,博客园] 关于为什么用Swagger 目前稍微有点规模的公司,已经从原先的瀑布流开发到了敏捷开发,实现前后端分离,为此后端工程师只关注写好Api即可,那程序员最讨厌的就 ...
- 总zabbix配置-搭建-邮件报警-微信报警-监控mysql
Centos7安装Zabbix4.0步骤 官方搭建zabbix4.0的环境要求: 1. 环境搭建LAMP 前提Centos系统安装完成: 确认一下: 1 2 cat /etc/redhat-rele ...
- Spring Boot项目简单上手+swagger配置+项目发布(可能是史上最详细的)
Spring Boot项目简单上手+swagger配置 1.项目实践 项目结构图 项目整体分为四部分:1.source code 2.sql-mapper 3.application.properti ...
随机推荐
- [日常摸鱼]Vijos1083小白逛公园-线段树
题意:单点修改,询问区间最大子段和,$n\leq 5e5$ 考虑分治的方法$O(nlogn)$求一次最大子段和的做法,我们是根据中点分成左右两个区间,那么整个区间的答案要么是左边答案,要么是右边答案, ...
- Promise对象,究竟为何物?
Promise对象 一.什么是Promise? Promise是一种异步操作的解决方案,将写法复杂的传统的回调函数和监听事件的异步操作,用同步代码的形式表达出来. Promise避免了多级异步操作的回 ...
- 使用SimpleDateFormat验证日期格式
Java中日期格式的验证有很多方式,这里介绍用 java.text.SimpleDateFormat 来实现时间验证的一种简单方式.首先我们要知道 SimpleDateFormat 对象有一个方法 v ...
- HTML 防盗链 用src引用网上图片显示 403 Forbidden
比如 <img class="toto" src="http://img5.imgtn.bdimg.com/it/u=152658425,3125530872&am ...
- Nginx timeout配置
缘由:客户测试反馈Request failed with status code 504,后续排查应该是nginx未配置超时设置 Step 1.打开nginx.conf查看 缺少keepalive_t ...
- 【JAVA并发第二篇】Java线程的创建与运行,线程状态与常用方法
1.线程的创建与运行 (1).继承或直接使用Thread类 继承Thread类创建线程: /** * 主类 */ public class ThreadTest { public static voi ...
- .NET Core AWS S3云存储
前言 最近有需要用到AWS S3云存储上传附件,这里对利用.NET或.NET Core在调用SDK APi需要注意的一点小问题做个记录,或许能对后续有用到的童鞋提供一点帮助 AWS S3云存储 官方已 ...
- 什么是Redis?
Remote Dictionary Server(Redis)是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.它通常被 ...
- HTML文本格式化标签
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 < ...
- Above the Median
http://www.forioi.com/p/3212 农夫约翰把他的N(1<=N<=1e5)奶牛排在一排来衡量他们的高度,牛i有:高度H_I(1<=H_I<=1e9)纳米– ...