上一步我们创建好CoreApi

接下来在框架中加入 Swagger  并发布  到 IIS

(1)首先点击依赖项》管理Nuget包

(2)输入 Swashbuckle.aspnetCore  比如:

图中两个Swagger 插件需要我们安装   注意:我这里已经安装过显示的是 卸载

 (3) 在框架中 添加Swagger 注解的帮助类   HttpHeaderOperation  下面是我完整的.CS文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; //添加引用
using Swashbuckle.AspNetCore.Swagger;
using Swashbuckle.AspNetCore.SwaggerGen;
using Microsoft.AspNetCore.Authorization;
namespace WebCoreApi
{
public class HttpHeaderOperation : IOperationFilter
{
/// <summary>
/// 实现接口
/// </summary>
/// <param name="operation"></param>
/// <param name="context"></param>
public void Apply(Operation operation, OperationFilterContext context)
{
if (operation.Parameters == null)
{
operation.Parameters = new List<IParameter>();
} var actionAttrs = context.ApiDescription.ActionAttributes(); var isAuthorized = actionAttrs.Any(a => a.GetType() == typeof(AuthorizeAttribute)); if (isAuthorized == false) //提供action都没有权限特性标记,检查控制器有没有
{
var controllerAttrs = context.ApiDescription.ControllerAttributes(); isAuthorized = controllerAttrs.Any(a => a.GetType() == typeof(AuthorizeAttribute));
} var isAllowAnonymous = actionAttrs.Any(a => a.GetType() == typeof(AllowAnonymousAttribute)); if (isAuthorized && isAllowAnonymous == false)
{
operation.Parameters.Add(new NonBodyParameter()
{
Name = "Authorization", //添加Authorization头部参数
In = "header",
Type = "string",
Required = false
});
}
}
}
}

(4) 添加 Swagger 的·服务方法 在  Startup中的  ConfigureServices方法里

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSwaggerGen(x =>
{
x.SwaggerDoc("v1", new Info
{
Version = "v1", //版本号
Title = "Szl接口文档", //标题
Description = "RESTful API ",
TermsOfService = "",//服务的条件
//第一个参数Name 创建人名称/也可以是 负责人名称 第二个参数 联系邮箱
Contact = new Contact { Name = "Su", Email = "szl_0000@126.com", Url = "北京" }
}); //获取设置配置信息的 的路径对象 swagger界面配置
var basePath = PlatformServices.Default.Application.ApplicationBasePath;
var xmlPath = Path.Combine(basePath, "AspNetCoreApiSwagger.xml");
x.IncludeXmlComments(xmlPath);
x.OperationFilter<HttpHeaderOperation>(); // 添加httpHeader参数
});
}

(5)添加 Swagger 启动项 在  Startup中的  Configure方法里

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseMvc();
app.UseSwagger();
// 指定站点
app.UseSwaggerUI(x =>
{
//做出一个限制信息 描述
x.SwaggerEndpoint("/swagger/v1/swagger.json", "TwBusManagement API V1");
//显示在发出请求时发送的标题
x.ShowRequestHeaders(); });
}

(6) 在框架自动生成的 Api 控制器里Post的方法上加入 注解(其他方法也可以,我只是举例)

        /// <summary>
/// AspNet Core Post请求
/// </summary>
/// <param name="value">User类</param>
/// <remarks>
///访问参数
/// POST
/// {
/// "value": "0e7ad584-7788-4ab1-95a6-ca0a5b444cbb",
/// }
///
/// </remarks>
/// <response code="201">返回新创建项</response>
/// <response code="400">如果为空时</response> [HttpPost]
[ProducesResponseType(typeof(User), )]
[ProducesResponseType(typeof(User), )]
public void Post([FromBody]User value)
{
}

注解的含义如下

summary 用来描述 方法的作用

remarks 用来描述传入的参数格式/也可以把调用的值放入里面

response 定义两个返回状态

User 类

/// <summary>
/// 用户类
/// </summary>
public class User
{
/// <summary>
/// 用户ID
/// </summary>
public int UserID { get; set; }
/// <summary>
/// 用户名称
/// </summary>
public int UserName { get; set; }
/// <summary>
/// 用户年龄
/// </summary>
public int UserAge { get; set; }
}

(7)在框架中   添加 AspNetCoreApiSwagger.xml 文件  一定要注意的是  xml 文件必须定义一个根节点 不然会报错  ,XML的属性   改为 始终复制   (XML文件在 第四步骤中有用到)

(8)设置 项目的生成 输出路径

(9)  发布   以文件夹发布就行

(10)部署IIS 说一下注意点     改成无托管代码

(11)打开IIS服务  中的模块

(12)查看是否有  AspNetCoreModule  没有进行安装 我是在国外的网站下载的

(13)  如果在运行部署的API  发生了错误

我们在  Program  中加入  如代码所示  可以帮助我们准确定义的问题所在

    public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
} public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
//发布程序出现错误帮助定位详细错误信息
// .UseKestrel()
//.UseContentRoot(Directory.GetCurrentDirectory())
//.UseSetting("detailedErrors", "true")
//.UseIISIntegration() .CaptureStartupErrors(true)
.UseStartup<Startup>()
.Build(); }

OK  今天就完成了,

以后会描述一下 框架的基础知识  比如  应用程序的启动、日子、路由、静态文件、WebSockteS  等,

等到基础描述过后,在框架中加入一些我闷在实战中用到的,希望大家多多指出错误不足之处,这是我的学习。

补充一下显示结果,开始的时候忘记截图了

有人在实践中遇到了没有注释的问题

在启动的时候

注意这里 XML名称是否错误

代码中读取的注释信息在 AspNetCoreApiSwagger.xml中,项目启动后会把注释信息生成到AspNetCoreApiSwagger.xml中

出处:https://www.cnblogs.com/szlblog/p/8068311.html

AspNet Core Api Restful +Swagger 发布IIS的更多相关文章

  1. AspNet Core Api Restful +Swagger 发布IIS 实现微服务之旅 (二)

    上一步我们创建好CoreApi 接下来在框架中加入 Swagger  并发布  到 IIS (1)首先点击依赖项>管理Nuget包 (2)输入 Swashbuckle.aspnetCore  比 ...

  2. AspNet Core Api Restful +Swagger 实现微服务之旅 (三)

    (1)  访问Rest ful接口时 Token验证  返回数据格式封装 (一)访问时Token验证  返回数据格式封装 1.1访问Api接口 方法 实现         1.1.1 创建访问Rest ...

  3. AspNet Core Api Restful +Swagger 实现微服务之旅(四)

    这几天没更新,项目框架也是在发展阶段,这几天学习配置了一遍Apollo和RabbitMQ 等到放到框架上之后我整理一下到时候把心得写出来相互学习. 接着上一篇的内容 (2)  程序错误时  返回数据格 ...

  4. AspNet Core Api Restful 实现微服务之旅 (一)

    (一)了解微服务(二)搭建VS项目框架  (三)创建AspNet Core Api VS2017 安装包   链接:https://pan.baidu.com/s/1hsjGuJq 密码:ug59 创 ...

  5. Asp.Net Core Api 使用Swagger管理文档教程的安装与使用

    这周因为公司的需求需要我做一个Api的程序,这周的三天时间我一直在Core Api和 framework Api之间做纠结.不知道要使用哪一个去做项目,想着想着就决定了.既然两个我都没用过那个何不来使 ...

  6. asp.net core Api配置swagger

    这个很简单的一篇文章用来记录以下使用swagger的过程,以后有用. 1.nuget 下载install-package Swashbuckle.AspNetCore 2.startup里面confi ...

  7. .NET Core Api 集成 swagger

    废话不多讲 第一步  当然是要通过 NuGet 安装第三方插件 swagger 程序包管理器控制台,安装命令:Install-Package Swashbuckle.AspNetCore -Pre 第 ...

  8. asp.net core Api集成Swagger

    当我们通过vs创建了一个api项目后,便可以开始集成swagger了 一.Swagger集成 从“程序包管理器控制台”窗口进行安装,执行Install-Package Swashbuckle.AspN ...

  9. .net core API 使用swagger

    第一种方法:直接添加swagger,会在app_start中生成SwaggerConfig,在该文件中配置相关内容(把生成xml打开): 第二种方法:添加四个引用文件Swashbuckle.AspNe ...

随机推荐

  1. spring源码研究2 自定义标签实现及使用

    1.自定义标签实现及使用参考: http://blog.csdn.net/fighterandknight/article/details/50112701 1)创建一个需要扩展的组件 User.ja ...

  2. 卷积神经网络-Dropout

    dropout 是神经网络用来防止过拟合的一种方法,很简单,但是很实用. 基本思想是以一定概率放弃被激活的神经元,使得模型更健壮,相当于放弃一些特征,这使得模型不过分依赖于某些特征,即使这些特征是真实 ...

  3. python+requests+excel 接口自动化框架

    一.项目框架如图: 1.common :这个包都是一些公共的方法,如:手机号加解密,get/post接口请求的方法封装,接口鉴权,发邮件,读写excel文件方法等等 2.result:存放每次运行的l ...

  4. 3-log4j2之输出日志到文件

    一.添加maven依赖 <dependencies> <dependency> <groupId>org.apache.logging.log4j</grou ...

  5. mkdir 获得新建文件权限

    使用mkdir创建文件夹时,发现这个函数有两个参数,第二个参数是为新创建的文件夹指定权限. 但是如果直接用mkdir('文件地址', 0777);时 发现新文件夹的权限并不是777,一般情况下会是02 ...

  6. python构造IP报文

    import socket import sys import time import struct HOST, PORT = "10.60.66.66", 10086 def m ...

  7. 跨交换机划分vlan配置

    实验要求:使两台交换机上同一vlan的主机能够通信,不同vlan的主机不能通信 拓扑如下: 涉及内容有: 1.vlan的创建和划分 2.端口trunk模式的设置 配置如下: Switch1 enabl ...

  8. lintcode 刷题 by python 部分链表题总结(2)

    本篇博客对最近做的链表的算法题做个简单的小结,主要描述题目和提供解题思路,具体代码见我的 github:https://github.com/MUSK1881/lintcode-by-python 3 ...

  9. Python学习笔记第三周

    目录 一.基础概念 1.集合 集合方法 a.设置集合 b.取交集 c.取并集 d.取差集 e.判断子集 f.判断父集 g.对称差集 基本操作: a.添加 b.删除 c.discard删除 d.长度 e ...

  10. 【转载】 AI会议的总结(by南大周志华)

    原文地址: https://blog.csdn.net/LiFeitengup/article/details/8441054 最近在查找期刊会议级别的时候发现这篇博客,应该是2012年之前的内容,现 ...