如:
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访问,在服务器外用浏览器测试看到效果正常。