国产中标麒麟Linux部署dotnet core 环境并运行项目 (三) 部署运行WEB API项目 (2)

如:

public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); services.AddMvc(options => { options.Filters.Add<IdentityActionFilter>(); options.Filters.Add<JsonpActionFilter>(); }); services.AddDistributedMemoryCache(); services.AddSession(); services.AddCors(); }

最后运行成功了:

[root@gumis02 API]# dotnet Beyondbit.One.BUA.API.dll Hosting environment: Production Content root path: /var/ftp/uffice/BUA One/API Now listening on: :5000 Application started. Press Ctrl+C to shut down. 增加多域名,多IP支持

如上面的步骤,在服务器内部使用:5000,但是在服务器外用 服务器IP:5000 访问的时候访问不到,而且是防火墙在禁用的情况下。 在服务器查看端口开放,使用以下命令:

[root@gumis02 ~]# netstat -an | grep 5000 tcp 0 0 127.0.0.1 5000 :::* LISTEN tcp 0 0 ::1 5000 :::* LISTEN [root@gumis02 ~]#

可以看到服务器5000端口是针对 127.0.0.1和localhost才可以访问到,这两个都是在服务器内部使用的。
按照.net core 启动域名及端口配置 文章中 linux环境一节说明的配置,将代码改造以下,支持在服务器外访问。

首先在解决方案中添加一个文件hosting.josn,内容如下:

{ "server.urls": "http://*:5000" }

然后在program.cs文件中修改启动代码:

namespace Beyondbit.One.BUA.API { public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) { var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("hosting.json", optional: true) .Build(); var host = new WebHostBuilder() .UseKestrel() .UseConfiguration(config) .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); return host; } } }

编译发布到服务器上,运行站点,然后查看命令:

[root@gumis02 ~]# netstat -an | grep 5000 tcp 0 0 ::: 5000 :::* LISTEN [root@gumis02 ~]#

可以看到 5000前面变成了 :::,而不是第一次的127.0.0.1或::1,这代表5000端口任何ip指向到这个服务器,都可以通过IP:5000访问,在服务器外用浏览器测试看到效果正常。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgwwwy.html