Asp.net core Web Api 配置swagger中文

启动项目,如图:

原来是英文的,我们要中文的,WeatherForecastController.cs是一个示例,删除即可,WeatherForecast.cs同时删除,当然不删除也行,这里是删除,创建自己的控制器

1创建model实体

namespace HouseSysWebApplication.Model
{///<summary>/// 图片实体类/// </summary>public class Book{/// <summary>/// 编号/// </summary>public int id { get; set; }/// <summary>/// 书名/// </summary>public string title { get; set; }/// <summary>/// 作者/// </summary>public string author { get; set; }/// <summary>/// 价格/// </summary>public float price { get; set; }/// <summary>/// 图片地址/// </summary>public string image { get; set; }}}

2 添加控制器BookController

Controller文件夹上右键,选择“添加”,选择“控制器”,选择API,

using HouseSysWebApplication.Model;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;namespace HouseSysWebApplication.Controllers
{/// <summary>/// 图书控制器/// </summary>[Route("api/[controller]")][ApiController]public class BookController : ControllerBase{List<Book> bookList = InitBookStore();private static List<Book> InitBookStore(){List<Book> bookList = new List<Book>();Book b1 = new Book();b1.id = 101;b1.author = "杨康";b1.title = "Java从入门到精通";b1.price = 89.5f;b1.image = "img01.jpg";bookList.Add(b1);Book b2 = new Book();b2.id = 102;b2.author = "天涯";b2.title = "Java项目开发实战入门";b2.price = 49.5f;b2.image = "img02.jpg";bookList.Add(b2);Book b3 = new Book();b3.id = 103;b3.author = "标贵";b3.title = "Java编程思想";b3.price = 76f;b3.image = "img03.jpg";bookList.Add(b3);Book b4 = new Book();b4.id = 104;b4.author = "西法";b4.title = "web开发手册";b4.price = 78.3f;b4.image = "img04.jpg";bookList.Add(b4);Book b5 = new Book();b5.id = 105;b5.author = "海风";b5.title = "唐诗宋词";b5.price = 29.5f;b5.image = "img05.jpg";bookList.Add(b5);return bookList;}/// <summary>/// 获取所有图书/// </summary>/// <returns>图书列表</returns>[HttpGet("all")]public List<Book> BookStore(){return bookList;}/// <summary>/// 查询指定名称的图书/// </summary>/// <param name="bookName">图书标题</param>/// <returns>图书列表</returns>[HttpGet("search")]public IEnumerable<Book> BookStore(string bookName){return bookList.FindAll(x => x.title.Contains(bookName)).AsEnumerable();}}
}

这里要注意的是代码的完整注释要写上,既然是写接口,生成的文档所以要详细,可读性强,启动后效果

3 生成xml文档

项目右键,选择属性,点击生成,勾选

将项目编译生成,就会自动创建xml文档

<?xml version="1.0"?>
<doc><assembly><name>HouseSysWebApplication</name></assembly><members><member name="T:HouseSysWebApplication.Controllers.BookController"><summary>图书控制器</summary></member><member name="M:HouseSysWebApplication.Controllers.BookController.BookStore"><summary>获取所有图书</summary><returns>图书列表</returns></member><member name="M:HouseSysWebApplication.Controllers.BookController.BookStore(System.String)"><summary>查询指定名称的图书</summary><param name="bookName">图书标题</param><returns>图书列表</returns></member><member name="T:HouseSysWebApplication.Model.Book"><summary>图片实体类</summary></member><member name="P:HouseSysWebApplication.Model.Book.id"><summary>编号</summary></member><member name="P:HouseSysWebApplication.Model.Book.title"><summary>书名</summary></member><member name="P:HouseSysWebApplication.Model.Book.author"><summary>作者</summary></member><member name="P:HouseSysWebApplication.Model.Book.price"><summary>价格</summary></member><member name="P:HouseSysWebApplication.Model.Book.image"><summary>图片地址</summary></member></members>
</doc>

4修改Program.cs

只要改一个地方就行

builder.Services.AddSwaggerGen(c =>
{c.SwaggerDoc("v1", new OpenApiInfo { Title = "微信小程序后端api文档", Version = "v1" });// var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);//获取应用程序所在目录(绝对,不受工作目录影响,建议采用此方法获取路径)// var xmlPath = Path.Combine(basePath, "HouseSysWebApplication.xml");var xmlPath = Path.Combine(AppContext.BaseDirectory, "HouseSysWebApplication.xml");c.IncludeXmlComments(xmlPath, true);//true:显示控制器注释c.OrderActionsBy(o => o.RelativePath);//action名称排序
});

5编译生成,启动,看效果,立马中文

选择某个接口,比如第1个

,点击测试,没有问题,说明一切杠杠的

注释没有问题,相当的帅,单独访问也正常

 6、IIS操作

7、修改web.config文件

原来是这样的

<?xml version="1.0" encoding="utf-8"?>
<configuration><location path="." inheritInChildApplications="false"><system.webServer><handlers><add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /></handlers><aspNetCore processPath="dotnet" arguments=".\HouseSysWebApplication.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /></system.webServer></location>
</configuration>
<!--ProjectGuid: b0eb1c5f-e8f5-4e0e-9968-c58f6c4d78db-->

增加一个内容

完整的内容是这样的

<?xml version="1.0" encoding="utf-8"?>
<configuration><location path="." inheritInChildApplications="false"><system.webServer><handlers><add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /></handlers><aspNetCore processPath="dotnet" arguments=".\HouseSysWebApplication.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" ><environmentVariables><environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /></environmentVariables></aspNetCore></system.webServer></location><system.webServer><defaultDocument><files><clear /><add value="index.htm" /><add value="Default.htm" /><add value="Default.asp" /><add value="index.html" /><add value="iisstart.htm" /></files></defaultDocument></system.webServer>
</configuration>
<!--ProjectGuid: b0eb1c5f-e8f5-4e0e-9968-c58f6c4d78db-->

8、修改网站默认首页

NetCore6.0 WebApi 发布IIS服务器后网站无法打开报404问题处理

情况介绍:
新建了个.NetCore 5.0 的 WebAPI项目,发布部署到WINDOWS10 的 IIS后,默认打开 http://127.0.0.1/swagger 出现404找不到页面的错误。

原因:
因为.NetCore 5.0 自带集成了Swagger , 在发布项目时,通常会在代码中限制ASPNETCORE_ENVIRONMENT为Production时关闭Swagger。


 

解决方法:
项目发布后默认为 Production 生产环境,可修改 web.config 文件,改成 Development 开发环境就可以访问。
具体方法如下:在web.config中添加一下代码

	<environmentVariables><environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /></environmentVariables>

C#编写ASP.NET Core的Web API并部署到IIS的部署方法及常见问题,原文链接

C#编写ASP.NET Core的Web API并部署到IIS上的详细教程(API用于准确获取Word/Excel/PPT/PDF的页数)6 -将项目部署到IIS,及常见错误解决方案_.net core 动态生成 word 接口-CSDN博客

6.2 网页报错“HTTP 错误 500.19 - Internal Server Error ”
IIS网站创建好后,点击浏览网站,浏览器页面报错“HTTP 错误 500.19 - Internal Server Error ”。

这个问题的原因是当前运行环境没有安装AspNetCoreModule。

请参考本文:
“4.4 安装AspNetCoreModule(Win10/Server通用)”这小节的操作步骤。
 

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

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

相关文章

pytest 之 pytest.ini配置文件

前言&#xff1a;pytest.ini全局配置文件&#xff0c;是pytest单元测试框架的核心配置文件&#xff0c;pytest.ini 可以改变 pytest 的默认行为 一、配置规则 1、优先级 如pytest.ini有该参数值&#xff0c;在执行的时候&#xff0c;优先读取配置文件中的参数如没有&#xf…

idea禁用双击ctrl

Run anything | IntelliJ IDEA Documentation Disable double modifier key shortcuts

去中心遇见混币器

区块链的去中心化交易所在保护隐私和安全性上有着无可比拟的优势&#xff0c;用户甚至不需要提供注册资料&#xff0c;只要有web3钱包即可跟智能合约交易。在uniswap上可兑换绝大多数加密币&#xff0c;新推出的衍生品交易所ununx已经可以交易美股&#xff0c;期货和外汇,一个全…

Flutter 知识集锦 | 监听与通知 ChangeNotifier

theme: cyanosis 1. 数据的提供者与消费者 今天想要和大家好好聊聊 ChangeNotifier 这个东西&#xff0c;从名字上来看它由 change(改变) 和 Notifier(通知器) 构成。打个比方&#xff1a; 有三个铁粉跟我说: "你发新文章的时候跟我说一声"。 之后我发布文章后&…

C++学习: 文件I/O

作者: 苏丙榅 原文链接: https://subingwen.cn/c/file/ 文章目录 1. 文件概述1.1 什么是文件I/O1.2 磁盘文件分类 2. 文件的打开和关闭2.1 文件指针2.2 打开文件 2.3 关闭文件3. 文件的读写3.1 按照字符读写文件3.1.1 写文件3.1.2 读文件3.1.3 EOF 3.2 按照行读写文件3.2.1 写文…

[架构之路-237]:目标系统 - 纵向分层 - 网络通信 - DNS的递归查询和迭代查询

目录 一、DNS协议与DNS系统架构 1.1 什么是DNS协议 1.2 为什么需要DNS协议 1.3 DNS系统架构 二、DNS系统的查询方式 2.1 递归与迭代的比较 2.2 DNS递归查询 2.3 DNS迭代查询 一、DNS协议与DNS系统架构 1.1 什么是DNS协议 DNS&#xff08;Domain Name System&#xff…

2023年中国商业版服务器操作系统市场发展规模分析:未来将保持稳定增长[图]

服务器操作系统一般指的是安装在大型计算机上的操作系统&#xff0c;比如Web服务器、应用服务器和数据库服务器等&#xff0c;是企业IT系统的基础架构平台&#xff0c;也是按应用领域划分的三类操作系统之一。同时服务器操作系统也可以安装在个人电脑上。 服务器操作系统分类 …

WSL Ubuntu 22.04.2 LTS 安装paddlepaddle-gpu==2.5.1踩坑日记

环境是wsl的conda环境。 使用conda安装paddlepaddle-gpu: conda install paddlepaddle-gpu2.5.1 cudatoolkit11.7 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ -c conda-forge 等待安装... 报错处理&#xff1a; (1)PreconditionNotMetError: Cannot lo…

excel管理接口测试用例

闲话休扯&#xff0c;上需求&#xff1a;自动读取、执行excel里面的接口测试用例&#xff0c;测试完成后&#xff0c;返回错误结果并发送邮件通知。 分析&#xff1a; 1、设计excel表格 2、读取excel表格 3、拼接url&#xff0c;发送请求 4、汇总错误结果、发送邮件 开始实现…

LeetCode24.两两交换链表中的节点

这道题还是比较简单&#xff0c;我看完题目的想法就是借助一个第三变量&#xff0c;来改变两个节点的指针的指向&#xff0c;比如我要改变1和2节点的指向&#xff0c;我用h1表示节点1&#xff0c;我创建一个新的节点ans&#xff0c;先拿ans指向节点2&#xff08;ans.next h1.n…

【面试高频题】难度 1/5,经典树的搜索(多语言)

题目描述 这是 LeetCode 上的 「109. 有序链表转换二叉搜索树」 &#xff0c;难度为 「中等」 Tag : 「二叉树」、「树的搜索」、「分治」、「中序遍历」 给定一个单链表的头节点 head&#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为高度平衡的二叉搜索树。 本题中&…

软件工程与计算(十四)详细设计中面向对象方法下的模块化

一.面向对象中的模块 1.类 模块化是消除软件复杂度的一个重要方法&#xff0c;每个代码片段相互独立&#xff0c;这样能够提高可维护性。在面向对象方法中&#xff0c;代码片段最重要的类&#xff0c;整个类的所有代码联合起来构成独立的代码片段。 模块化希望代码片段由两部…

CSS的布局 Day03

一、显示模式&#xff1a; 网页中HTML的标签多种多样&#xff0c;具有不同的特征。而我们学习盒子模型、使用定位和弹性布局把内容分块&#xff0c;利用CSS布局使内容脱离文本流&#xff0c;使用定位或弹性布局让每块内容摆放在想摆放的位置&#xff0c;让网站页面布局更合理、…

Android ViewBinding和DataBinding功能作用区别

简述 ViewBinding和DataBinding都是用于在 Android 应用程序中处理视图的工具&#xff0c;但它们有不同的作用和用途。 ViewBinding: ViewBinding 是 Android Studio 的一个工具&#xff0c;用于生成一个绑定类&#xff0c;能够轻松访问 XML 布局文件中的视图。ViewBinding 为…

ubuntu16.04安装vscode遇到的code 依赖于 libnss3 (>= 2:3.30)解决

ubuntu16.04安装vscode遇到的code 依赖于 libnss3 (> 2:3.30)&#xff1b;然而&#xff1a;系统中 libnss3:amd64 的版本为 2:3.28.4-0ubuntu0.16.04.14解决方法 一开始下载了最新版本的vscode&#xff0c;安装时出现了上面的错误状况&#xff0c;最新版本的依赖库版本过低的…

Idea怎么配置Maven才能优先从本地仓库获取依赖

网上的方法 : 在设置中搜索 Runner ,在VM Option中设置参数 -DarchetypeCataloginternal删除 解压后的依赖包中的 _remote.repositories m2e-lastUpdated.properties *.lastUpdated 文件。 上边都没有效果 最终的解决方法&#xff0c;修改maven配置文件settings.xml 主要两个…

LeetCode讲解篇之198. 打家劫舍

LeetCode讲解篇之198. 打家劫舍 文章目录 LeetCode讲解篇之198. 打家劫舍题目描述题解思路题解代码 题目描述 题解思路 该问题可以通过递推来完成 递推公式&#xff1a; 前n间房的最大金额 max&#xff08;前n-1间房的最大金额&#xff0c; 前n-2间房的最大金额第n-1间房的最…

MySQL学习(四)——事务与存储引擎

文章目录 1. 事务1.1 概念1.2 事务操作1.2.1 未设置事务1.2.2 控制事务 1.3 事务四大特性1.4 并发事务问题1.5 事务隔离级别 2. 存储引擎2.1 MySQL体系结构2.2 存储引擎2.3 存储引擎的特点2.3.1 InnoDB2.3.2 MyISAM2.3.3 Memory2.3.4 区别和比较 1. 事务 1.1 概念 事务 是一组…

深度分析c+引用的本质以及引用与指针的区别

文章目录 引用的概念引用的定义引用的特性引用的权限问题引用的使用方式引用作参数引用作返回值指针的本质引用和指针的区别 引用的概念 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用…

C语言——二周目——数据在内存中的存储

目录 一、整数的存储方式 二、浮点数的存储方式 一、整数的存储方式 因为CPU只有加法器&#xff0c;所以对于整型来说&#xff0c;数据在内存中通常采用补码的方式进行储存。 在这里复习一下原码、反码、补码。 正数和无符号数的原码、反码、补码相同&#xff1b; 负数的原…