Ubuntu部署Asp.net core网站无法访问

前几天应工作需要,在阿里云上部署一个测试站点。本以为分分钟的事情,没想到打脸了。

当时直接新建一个webapi项目,publish后直接上传到阿里云,随后设置nginx转发网站端口5000。

接着打开网站测试访问,结果傻眼了,502.....。

于是乎,使用dotnet命令行启动,指定端口8080,更改nginx配置转而监听8080。测试,又打不开。

明明是按照众大神的文章一步一步来的,怎么会出错呢?搞不明白。随后老老实实阅读微软官方文档,

终于发现问题所在。原来是我没有设置Kestrel的监听端口。

论基础的重要性!!!要好好读书o(╥﹏╥)o,夯实基本功。

经历说完了,接下来说说如何配置网站端口。

设置的方式有三种:

第一种:Program类的CreateHostBuilder方法指定Urls

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseUrls("http://*:8080");
                    webBuilder.UseStartup<Startup>();
                });

第二种:使用配置文件Hosting.json

{
  "urls": "http://*:8080"
}

项目需要添加引用

"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0"

Program代码

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                }).ConfigureHostConfiguration(configHost => { 
                    configHost.SetBasePath(Directory.GetCurrentDirectory());
                    configHost.AddJsonFile("hosting.json", optional: true, reloadOnChange : true);
                });

第三种:使用命令行配置

dotnet demo.dll --environment development --urls "http://*:8081"

项目需要添加引用

"Microsoft.Extensions.Configuration.CommandLine": "3.1.2"

Program代码

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                }).ConfigureHostConfiguration(configHost => { 
                    configHost.AddCommandLine(args);
                });

 

注:三种方式可同时配置,但是具有优先级:UseUrls < 文件配置 < 命令行配置

posted @ 2020-03-14 16:42  李怀瑾  阅读(642)  评论(0编辑  收藏  举报