问题起源

网上的常见配置 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 问题处理的更多相关文章

  1. .NetCore WebApi——Swagger简单配置

    在前后端分离的大环境下,API接口文档成为了前后端交流的一个重点.Swagger让开发人员摆脱了写接口文档的痛苦. 官方网址:https://swagger.io/ 在.Net Core WebApi ...

  2. .NetCore WebApi —— Swagger版本控制

    目录: .NetCore WebApi——Swagger简单配置 .NetCore WebApi——基于JWT的简单身份认证与授权(Swagger) .NetCore WebApi —— Swagge ...

  3. 一、Swagger配置

    一.Swagger配置 1.注解不显示 SwaggerConfig文件下   //c.IncludeXmlComments(GetXmlCommentsPath()):  内下面添加: c.Inclu ...

  4. 尝试从零开始构建我的商城 (二) :使用JWT保护我们的信息安全,完善Swagger配置

    前言 GitHub地址 https://github.com/yingpanwang/MyShop/tree/dev_jwt 此文对应分支 dev_jwt 此文目的 上一篇文章中,我们使用Abp vN ...

  5. 《Asp.Net Core3 + Vue3入坑教程》-Net Core项目搭建与Swagger配置步骤

    简介 <Asp.Net Core3 + Vue3入坑教程> 此教程仅适合新手入门或者前后端分离尝试者.可以根据图文一步一步进操作编码也可以选择直接查看源码.每一篇文章都有对应的源码 教程后 ...

  6. .Net Webapi Swagger增加登录功能

    .mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...

  7. Asp.Net WebApi Swagger终极搭建

    [PS:原文手打,转载说明出处,博客园] 关于为什么用Swagger 目前稍微有点规模的公司,已经从原先的瀑布流开发到了敏捷开发,实现前后端分离,为此后端工程师只关注写好Api即可,那程序员最讨厌的就 ...

  8. 总zabbix配置-搭建-邮件报警-微信报警-监控mysql

    Centos7安装Zabbix4.0步骤 官方搭建zabbix4.0的环境要求: 1. 环境搭建LAMP 前提Centos系统安装完成:  确认一下: 1 2 cat /etc/redhat-rele ...

  9. Spring Boot项目简单上手+swagger配置+项目发布(可能是史上最详细的)

    Spring Boot项目简单上手+swagger配置 1.项目实践 项目结构图 项目整体分为四部分:1.source code 2.sql-mapper 3.application.properti ...

随机推荐

  1. [日常摸鱼]poj2417 DiscreteLogging-BSGS算法

    在这题TLE了一天-T_T BSGS裸题-不知道为什么一直挂 第二天(也就是今天)换成黄学长博客里的写法就过掉了 题意:解关于$x$的方程:$a^x \equiv b \pmod{p}$,$p$为质数 ...

  2. 个人微信公众号搭建Python实现 -个人公众号搭建-总结(14.3.6)

    @ 目录 1.主要技术:Flask,requests 2.实现的主要功能 3.目录说明 4.运行方式 关于作者 1.主要技术:Flask,requests requirements.txt如下 req ...

  3. 只要肯下功夫,十岁也能学得会的 Docker 精简版!

    目录 一.Docker简介 1.1 什么是Docker 1.2 Docker中包括三个基本的概念 1.3 Docker组件 1.4 安装Docker 二.Docker常用命令 三.应用部署 3.1 m ...

  4. python 画图二(三维图,多轴图)

    import sys reload(sys) sys.setdefaultencoding('utf-8') import matplotlib.pyplot as plt import numpy ...

  5. 使用h5开发跨平台APP确保数据安全交互---服务器篇

    从eclipse到android studio的安卓开发经验告诉我原声开发才是硬道理,其实以前很抵触html5开发app的,虽然没有去了解过,但是冥冥中就觉得它运行速度太慢了,加载渲染根本比不上原生开 ...

  6. sql将两个查询结果拼接到一块,去掉重复,动态sql

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...

  7. Spring Data JPA简介 Spring Data JPA特点

    Spring Data JPA 是Spring基于ORM框架.JPA规范的基础上封装的一套JPA 应用框架,底层使用了Hibernate 的JPA技术实现,可使开发者用极简的代码即可实现对数据的访问和 ...

  8. 【转载】Vue.nextTick 的原理和用途

    对于 Vue.nextTick 方法,自己有些疑惑.在查询了各种资料后,总结了一下其原理和用途,如有错误,请不吝赐教. 概览 官方文档说明: 用法: 在下次 DOM 更新循环结束之后执行延迟回调.在修 ...

  9. @Transactional注解失效的解决方案

    一.前言 开发中我们经常使用 @Transactional注解来启用Spring事务管理,但是如果使用方法不当,会遇到注解不生效该事务回滚的地方却没有回滚的问题. 总结下一般是以下几个原因: @Tra ...

  10. vscode 安装与配置

    vscode 安装与配置 安装 安装 vscode 从官网 [https://code.visualstudio.com/Download] 下载速度奇慢,可以找到下载的网址,如下图所示,将其中红色框 ...