.NetCore WebApi Swagger简单配置 + 部署到Linux系统(教程+坑总结)
.NetCore WebApi Swagger简单配置 + 部署到Linux系统(教程+坑总结)
1.创建一个webapi项目
2.引入Swagger包。.Net Core 中支持两个分别为Swashbuckle和NSwag。两者的配置大同小异。这里以Swashbuckle为例。
方式1:选择工具——Nuget包管理——管理解决方案的Nuget包
搜索:Swashbuckle.AspNetCore 安装即可
安装之后在项目的Nuget包中就可以看到了
3.配置Swagger中间件
3.1 在Startup类ConfigureServices方法中添加Swagger服务并配置文档信息
public void ConfigureServices(IServiceCollection services)
{
// 注册Swagger服务
services.AddSwaggerGen(c =>
{
// 添加文档信息
c.SwaggerDoc("v1", new Info { Title = "CoreWebApi", Version = "v1" });
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
3.2 在 Startup类Configure 方法中,启用中间件为生成的 JSON 文档和 Swagger UI 提供服务
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
// 启用Swagger中间件
app.UseSwagger();
// 配置SwaggerUI
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "CoreWebApi");
});
app.UseMvc();
}
到了这里有个小坑需要注意一下:使用服务的时候,json路径的那个版本号和上面注册服务的版本号必须一致
右键项目属性,将URL地址固定到某个端口
然后将启动项设置为当前项目,然后启动。
配置好后,我们启用一下看看,出现下面这个页面:这是初始化页面自带的调试文档
这个页面不是我们想要的,出现这个原因是我们没有修改launchSettings.json配置文件。
接下来我们需要修改launchSettings.json文件(不知道这个文件的小伙伴搜一下就能找到了
我们需要把WeatherForecast改为swagger的index.html中:
好了,我们再把项目启动一下看看效果,出现的结果如下图:
swagger就配置好了 哈哈哈哈
4.发布到Lunix系统
接下来就是发布
选择文件夹,选择你要发布的项目的位置。
最后保存并发布就好了。
netcore项目的创建和发布就这样结束了。
第二步,你得准备一个linux服务器,然后安装环境
如果你条件允许,可以直接在阿里云或者腾讯云、华为云、百度云上买一个服务器。
新用户是白菜价哦,(这里真不是打广告)当然你可以在你电脑上安装一个VMware虚拟机。
具体安装步骤百度一下一大把,这里就不演示了。
我就在在百度云买了一个linux服务器,嗯,价格还算便宜,毕竟新用户,为什么用百度云??
当然不是因为他好,而是我阿里云已经不是新用户了
好了,我们继续。
用xshell登录到你的linux服务器上。(如果不懂linux,没关系,你总会百度吧)
登录成功后,你可以在直接输入如下命令(这个是在Linux上配置dontnet环境)
sudo yum install dotnet-sdk-2.2
点击确认,你需要等一段时间,如果你服务器网速很差,那么你可以会等很久。
如下图示,遇到这里你需要点击敲一下你的键盘上的 y 回车即可
这个时候系统开始慢慢的下载了,请耐心等待即可。
终于下载完成了
你可以输入下面的命令看看是否成功
dotnet --version
显示如下,表示按照成功
然后我们把发布包上传到服务器上来
我这里用的是xftp工具,当然也有其他工具可,下图所示是我安装的两个工具,大家可以去下载安装。
注意这两二个是便于我们更好管理Linux的,一定要版本一致比如都下载6
这里给大家提供一些我在网盘保存的一些工具
Xshell+Xftp真正破解版 https://pan.baidu.com/s/1Ew1XPg11sakpc8mvK6QsHg
打开xftp并连接到服务器,如下所示
我这里用的root权限,这里进来就直接就是root根目录了
然后右键点击创建一个目录用来保存你上传的netcore文件,嗯,就取名netcore吧
然后在左边找到你刚刚发布的那个包的位置,并且点击右边的netcore进入到对应的目录中
然后文件就开始传输了
然后输入命令cd 进入到我们上传的这个发布包中。
然后在输入命令 ll
cd netcore
ll
我们可以找到WebApiTest.dll文件
然后输入命令
dotnet WebApiTest.dll
如图所示,就恭喜你你的项目运行正常。
然后你Ctrl+C结束掉这个程序,这里只能在服务器内部访问,外面是不能访问的。
然后输入如下命令
dotnet WebApiTest.dll --server.urls “http://*:6666”
如图所示
然后用postman或者一些在线工具访问这个接口,如图所示,那么恭喜你成功了
这个测试工具的网站:https://www.sojson.com/httpRequest/
小编在把.net core2.2的web应用发布至Linux服务上出现如下问题:
在网上查找资料,网上的解决办法一般都是,配置nginx代理,设置为http://127.0.0.1:5000这种方式来解决,小编通过自己研究,提供了以下解决方案,亲测可用:
第一步:打开.net core应用程序,找到Program.cs文件,项目创建时自动生成的如下代码
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
替换成:
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
var host = WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
if (environment != "Development")
{
var configuration = new ConfigurationBuilder()
.AddCommandLine(args)
.Build();
host.UseUrls(configuration.GetSection("Urls").Value);
}
return host;
}
保存,编译应用,上传发布文件至Linux服务器
第二步:在Linux服务器进入发布文件的文件夹,输入以下命令:
dotnet coreWebTest.dll --urls=http://0.0.0.0:5000 --ASPNETCORE_ENVIRONMENT=Production
回车
OK,问题解决!