iis swagger 部署_AspNet Core Api Restful +Swagger 发布IIS

上一步我们创建好CoreApi

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

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

6a81090d4a1b83293f2f6e586c510182.png

(2)输入 Swashbuckle.aspnetCore  比如:

d8b996403e66ea710fe0855e17ad30dc.png

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

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

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});

}

}

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

View Code

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

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参数

});

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

View Code

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

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();

});

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

View Code

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

///

///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)

{

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

View Code

注解的含义如下

summary 用来描述 方法的作用

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

response 定义两个返回状态

User 类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

///

///用户类///

public classUser

{///

///用户ID///

public int UserID { get; set; }///

///用户名称///

public int UserName { get; set; }///

///用户年龄///

public int UserAge { get; set; }

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

View Code

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

568c7e5ddc1ac278aaec24440db0e5a7.png

7e3fc488d9e77017cd634611a0536e4d.png

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

2faa95d4ffc23a2d2768bf8cd818d60f.png

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

1c72ee15703af46871362a060b50aba0.png

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

bad0b56353d94a61a1323d9f643cd229.png

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

9bc3fd49a8b7cbedc4dc7e9bdcfaf40c.png

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

6a473156013ef06649e6074cee2502a0.png

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

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

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();

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

View Code

OK  今天就完成了,

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

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

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

7c273d469eaa8ff565a7bde43d18a3d5.png

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

在启动的时候

注意这里 XML名称是否错误

13b53d952f1ac2bede0081bdf09c9f43.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IIS部署ASP.NET Core Web API项目及Swagger可以按照以下步骤进行: 1. 首先,我们需要确保已经在本地系统上安装了ASP.NET Core Runtime和ASP.NET Core Hosting Bundle,以便在IIS中运行ASP.NET Core应用程序。 2. 在Visual Studio中,打开你的ASP.NET Core Web API项目。确保项目已经设置为IIS Express作为本地开发服务器。 3. 在项目根目录下的`Properties`文件夹中找到`launchsettings.json`文件,检查并确保该文件中已经配置了`applicationUrl`为`http://localhost:{port}/`,其中`port`为你希望的端口号。 4. 在Visual Studio的顶部菜单中,找到 `Build` -> `Publish {YourProjectName}`,选择发布目标为`Folder`,点击 `Publish`。 5. 在弹出的窗口中选择一个输出文件夹,用于存储发布项目的文件。 6. 打开发布文件夹,在该文件夹中应该有一个名为`web.config`的文件。双击打开该文件,确保其中有以下代码片段: ```xml <aspNetCore processPath="dotnet" arguments=".\{YourProjectName}.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" /> ``` 7. 打开IIS管理器,右键点击`Sites`节点,选择`Add Website`。填写网站名称以及物理路径为刚刚发布项目的目录。 8. 对于应用程序池,选择一个合适的.NET CLR版本和托管管道模式(例如:.NET CLR版本为No Managed Code,托管管道模式为集成)。 9. 在网站的右侧,找到`Authentication`,禁用匿名身份验证并启用Windows身份验证。 10. 重新启动IIS。 11. 现在,我们可以在浏览器中访问`http://localhost:{port}`,应该能够看到你的ASP.NET Core Web API已经在IIS上成功部署。 12. 最后,要在部署的项目中添加Swagger,可以通过NuGet包管理器,添加`Swashbuckle.AspNetCore`包。 13. 在`Startup.cs`文件的`ConfigureServices`方法中,添加以下配置: ```csharp services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "API", Version = "v1" }); }); ``` 14. 在`Startup.cs`文件的`Configure`方法中,添加以下代码: ```csharp app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "API v1"); }); ``` 15. 重新发布并重新启动IIS,现在你的ASP.NET Core Web API应该在IIS部署并且通过Swagger可以浏览和调用你的API接口。 以上就是在IIS部署ASP.NET Core Web API项目及Swagger的步骤。请注意,确保按照正确的顺序执行每一步,并根据自己的项目配置进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值