iis swagger 部署_AspNet Core Api Restful +Swagger 发布IIS 实现微服务之旅 (二)
上一步我们创建好CoreApi
接下来在框架中加入 Swagger 并发布 到 IIS
(1)首先点击依赖项》管理Nuget包
(2)输入 Swashbuckle.aspnetCore 比如:
图中两个Swagger 插件需要我们安装 注意:我这里已经安装过显示的是 卸载
(3) 在框架中 添加Swagger 注解的帮助类 HttpHeaderOperation 下面是我完整的.CS文件
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;//添加引用
usingSwashbuckle.AspNetCore.Swagger;usingSwashbuckle.AspNetCore.SwaggerGen;usingMicrosoft.AspNetCore.Authorization;namespaceWebCoreApi
{public classHttpHeaderOperation : IOperationFilter
{///
///实现接口///
///
///
public voidApply(Operation operation, OperationFilterContext context)
{if (operation.Parameters == null)
{
operation.Parameters= new List();
}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(newNonBodyParameter()
{
Name= "Authorization", //添加Authorization头部参数
In = "header",
Type= "string",
Required= false});
}
}
}
}
View Code
(4) 添加 Swagger 的·服务方法 在 Startup中的 ConfigureServices方法里
public voidConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSwaggerGen(x=>{
x.SwaggerDoc("v1", newInfo
{
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(); //添加httpHeader参数
});
}
View Code
(5)添加 Swagger 启动项 在 Startup中的 Configure方法里
public voidConfigure(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();
});
}
View Code
(6) 在框架自动生成的 Api 控制器里Post的方法上加入 注解(其他方法也可以,我只是举例)
///
///AspNet Core Post请求///
/// User类
///
///访问参数///POST///{///"value": "0e7ad584-7788-4ab1-95a6-ca0a5b444cbb",///}///
///
/// 返回新创建项
/// 如果为空时
[HttpPost]
[ProducesResponseType(typeof(User), 201)]
[ProducesResponseType(typeof(User), 400)]public voidPost([FromBody]User value)
{
}
View Code
注解的含义如下
summary 用来描述 方法的作用
remarks 用来描述传入的参数格式/也可以把调用的值放入里面
response 定义两个返回状态
User 类
///
///用户类///
public classUser
{///
///用户ID///
public int UserID { get; set; }///
///用户名称///
public int UserName { get; set; }///
///用户年龄///
public int UserAge { get; set; }
}
View Code
(7)在框架中 添加 AspNetCoreApiSwagger.xml 文件 一定要注意的是 xml 文件必须定义一个根节点 不然会报错 ,XML的属性 改为 始终复制 (XML文件在 第四步骤中有用到)
(8)设置 项目的生成 输出路径
(9) 发布 以文件夹发布就行
(10)部署IIS 说一下注意点 改成无托管代码
(11)打开IIS服务 中的模块
(12)查看是否有 AspNetCoreModule 没有进行安装 我是在国外的网站下载的
(13) 如果在运行部署的API 发生了错误
我们在 Program 中加入 如代码所示 可以帮助我们准确定义的问题所在
public classProgram
{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()
.Build();
}
View Code
OK 今天就完成了,
以后会描述一下 框架的基础知识 比如 应用程序的启动、日子、路由、静态文件、WebSockteS 等,
等到基础描述过后,在框架中加入一些我闷在实战中用到的,希望大家多多指出错误不足之处,这是我的学习。
补充一下显示结果,开始的时候忘记截图了
有人在实践中遇到了没有注释的问题
在启动的时候
注意这里 XML名称是否错误
代码中读取的注释信息在 AspNetCoreApiSwagger.xml中,项目启动后会把注释信息生成到AspNetCoreApiSwagger.xml中
iis swagger 部署_AspNet Core Api Restful +Swagger 发布IIS 实现微服务之旅 (二)相关推荐
- IIS上部署Net.Core
部署: 1.安装vc_redist.x64vc_redist.x64 2.安装DotNetCore.1.0.0.RC2-WindowsHosting 3.安装DotNetCore.1.0.0-SDK. ...
- 在IIS上部署.net core的webapi项目 以及502.5错误的两种解决方法
在IIS上部署.net core的webapi项目 以及502.5错误的两种解决方法 参考文章: (1)在IIS上部署.net core的webapi项目 以及502.5错误的两种解决方法 (2)ht ...
- 微服务实践(二):使用API Gateway
[编者的话]本系列的第一篇介绍了微服务架构模式.它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选择. 点击这里获取云原生干货 当你决定将应用作为一组微服务时,需要决定 ...
- 【go-zero】go-zero开发环境 如何聚合所有api? caddy反向代理服务分发 微服务设计api聚合方法 best practice
帮助go-zero开发者聚合api 相关视频 一.go-zero 微服务整体架构 1.微服务的基本架构 2.go-zero 微服务的 api authrpc.api 文件 routes.go 文件 二 ...
- win 10+ iis 10 部署.net core 1.1 web api
今天上午部署了wcf,部署了好久,一直没有部署好,最后找到了dudu的部署方法,结果中午吃饭的时候成功了,这是链接:http://www.cnblogs.com/dudu/p/3328066.html ...
- Windows IIS 环境部署 .NET Core 语言文件 SSL证书 HTTPS协议
Azure 应用服务和 IIS 上 ASP.NET Core 的常见错误参考 .NET Core 应用程序发布概述[发布独立应用] .NET Core 应用程序发布概述[发布依赖于运行时的应用] Do ...
- 【.net core】电商平台升级之微服务架构应用实战
一.前言 这篇文章本来是继续分享IdentityServer4 的相关文章,由于之前有博友问我关于微服务相关的问题,我就先跳过IdentityServer4的分享,进行微服务相关的技术学习和分享.微服 ...
- 需要单机还是集群部署_单机、集群和分布式(微服务结构)的区别
一.单机 单机就是所有的业务全部写在一个项目中,部署服务到一台服务器上,所有的请求业务都由这台服务器处理.显然,当业务增长到一定程度的时候,服务器的硬件会无法满足业务需求.自然而然地想到一个程序不行就 ...
- iis swagger 部署_asp.net-core – 虚拟目录中的IIS站点Swagger UI端点
Swagger UI端点与登台时的dev不同(不包括域名) IIS配置 public void Configure(IApplicationBuilder app, IHostingEnvironme ...
- 【Core Swagger】.NET Core中使用swagger
一.入门 https://www.nuget.org/packages/Swashbuckle.AspNetCore.SwaggerGen/ 1.添加核心NUGET包 Swashbuckle.AspN ...
最新文章
- java导出为excel文件_java导出数据到excel文件
- Halcon_灰度直方图和特征直方图的使用
- Lync-用户-电话号码-更新
- python 数据科学 包_什么时候应该使用哪个Python数据科学软件包?
- python数独游戏源代码100行_python实现自动解数独小程序
- Zabbix如何通过ODBC对接Oracle获取相关数据
- vim的ex模式介绍
- xp桌面计算机在哪个文件夹,XP电脑的桌面背景在哪个文件夹?
- JS导出Excel文件的方式
- CEEMDAN算法及其应用
- svchost.exe病毒-任务栏怎么也关闭不掉的搜索框
- 让dede织梦显示最新文章前面加小图标
- 公司要收我的毕业证书,这合法吗?——网上答疑(17)
- trim()方法的使用
- 永远怀念左耳朵耗子陈皓——IT界的失去
- android国际化设置语言后不起作用,Android旋转屏幕后国际化语言失效的解决的方法...
- linux下怎样运行oyrhon,Fedora CoreOS基础操作,包括安装并运行Fedora CoreOS
- 电脑桌面云便签怎么设置分类宽度?
- 保护眼睛的电脑桌面颜色(推荐)
- ORA-01653: unable to extend table OGGADM.GGS_MARKER by 8192 in tablespace OGG