基于 .NET 6 的ASP.NET Core启动地址配置方法及优先级顺序

目录
  • 前言:
  • 一、设置方法
    • ​1.applicationUrl属性​
    • ​2.环境变量​
    • ​3.命令行参数​
    • ​4.UseUrls方法​
      • .NET5版本
      • .NET6版本
    • ​5.UseKestrel方法​
    • ​6.WebApplication.Urls.Add方法​
    • ​7.appsettings.json文件​
  • 二、优先级
  • 三、结论

前言:

上次,我们讨论了如何通过配置或代码方式修改启动地址:《​ ​ASP.NET Core启动地址配置方法及优先级顺序​​》。不过是基于 .NET 5 版本的。

由于 .NET 6 使用了最小 WEB API, 配置方式已经部分发生了变化。

一、设置方法

​1. applicationUrl 属性​

launchSettings.json 文件中的 applicationUrl 属性,但是仅在本地开发计算机上使用:

"profiles": {
    "WebApplication1": {
        ...
        "applicationUrl": "http://localhost:5100",
    }
}

​2.环境变量​

环境变量ASPNETCORE_URLS,有多个设置位置,下面演示的是使用 launchSettings.json 文件:

"profiles": {
    "WebApplication1": {
        ...
        "environmentVariables": {
            "ASPNETCORE_URLS": "http://localhost:5200"
        }
    }
}

​3.命令行参数​

命令行参数 --urls,有多个设置位置,下面演示的是使用 launchSettings.json 文件:

"profiles": {
    "WebApplication1": {
        ...
        "commandLineArgs": "--urls http://localhost:5300",
    }
}

​4. UseUrls 方法​

.NET 5 版本

修改 ConfigureWebHostDefaults 方法:

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

.NET 6 版本

对应的方法为 ​WebApplicationBuilder​.WebHost.UseUrls:

var builder = WebApplication.CreateBuilder(args);

builder.WebHost.UseUrls("http://localhost:5400");

​​但是,运行后不起作用。​​

​​结果发现这是 .NET 6 的 BUG​​ (Builder.WebHost.UseUrls does not seem to override default url),并将在 6.0.3 中修复:https://github.com/dotnet/aspnetcore/issues/38185

​5. UseKestrel 方法​

.NET 5 版本:

修改ConfigureWebHostDefaults方法:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
            webBuilder.UseKestrel(options=> options.ListenLocalhost(5500, opts => opts.Protocols = HttpProtocols.Http1));
        });

.NET 6 版本:

对应的方法为 ​WebApplicationBuilder​.WebHost.ConfigureKestrel:

var builder = WebApplication.CreateBuilder(args);
builder.WebHost.ConfigureKestrel(options => options.ListenLocalhost(5500, opts => opts.Protocols = HttpProtocols.Http1));

​6. WebApplication.Urls.Add 方法​

.NET 6 版本

这是 .NET 6 下增加的新方法:

var app = builder.Build();
app.Urls.Add("http://localhost:5600");

​7. appsettings.json 文件​

可以在 appsettings.json 文件中设置 Kestrel 端口:

{
  "Kestrel": {
    "Endpoints": {
      "Https": {
        "Url": "https://*:5701"
      },
      "Http": {
        "Url": "http://*:5700"
      }
    }
  }
}

二、优先级

通过将上述设置方式进行组合,发现优先级顺序如下:

  • WebApplicationBuilder.WebHost.ConfigureKestrel 方法 / appsettings.json 文件 (​2者可同时起作用)
  • WebApplication.Urls.Add 方法
  • 命令行参数 --urls
  • 环境变量 ASPNETCORE_URLS
  • applicationUrl 属性
  • 默认值

三、结论

如果在同一台机器上运行多个 ASP.NET Core 实例,使用默认值肯定不合适。

由于​WebApplicationBuilder​.WebHost.ConfigureKestrel/WebApplication.Urls.Add 方法不能被覆盖,而环境变量 ASPNETCORE_URLS 容易造成全局影响。

​​建议:始终使用appsettings.json 文件配置启动地址。

到此这篇关于基于 .NET 6 的ASP.NET Core启动地址配置方法及优先级顺序的文章就介绍到这了,更多相关ASP.NET Core启动地址配置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • ASP.NET Core中的Razor页面使用视图组件

    视图组件简介 在新的ASP.NET Core MVC中,视图组件类似于局部视图,但它们更强大.视图组件不使用模型绑定,仅依赖于您在调用时提供的数据. 视图组件特性: 呈现页面响应的某一部分而不是整个响应 包括在控制器和视图之间发现的关注分离和可测试性优势 可以具有参数和业务逻辑 通常在页面布局中调用 视图组件是在任何地方可重用的呈现逻辑,对于局部视图来说相对复杂,例如: 动态导航菜单 标签云(查询数据库) 登录面板 购物车 最近发表的文章 典型博客上的侧边栏内容 将在每个页面上呈现的登录面板,并

  • ASP.NET CORE读取json格式配置文件

    目录 一.在Startup类中读取json配置文件 1.使用Configuration直接读取 2.使用IOptions接口 1.定义实体类 2.修改json文件 3.在StartUp类里面配置 3.读取自定义json文件 实例化类 添加方式1 添加方式2 二.在类库中读取json文件 在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用json格式的

  • asp.net core 获取 MacAddress 地址方法示例

    本文告诉大家如何在 dotnet core 获取 Mac 地址 因为在 dotnetcore 是没有直接和硬件相关的,所以无法通过 WMI 的方法获取当前设备的 Mac 地址 但是在 dotnet core 可以使用下面的代码拿到本机所有的网卡地址,包括物理网卡和虚拟网卡 IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties(); NetworkInterface[] nics = Net

  • ASP.NET Core中的Razor页面实现路由功能

    在服务器端 Web 应用程序框架中,其中非常重要的设计是开发人员如何将URL与服务器上的资源进行匹配,以便正确的处理请求.最简单的方法是将 URL 映射到磁盘上的物理文件,在 Razor 页面框架中,ASP.NET团队就是这样实现的. 关于 Razor 页面框架如何将 URL 与文件相匹配,有一些规则您必须了解,以及如何根据需要自定义规则改变输出的结果.如果您将 Razor 页面与 Web Form 框架进行比较,您还需要了解取代的 Ur l参数以及在URL中传递数据的机制. 规则一,Razor

  • 基于 .NET 6 的ASP.NET Core启动地址配置方法及优先级顺序

    目录 前言: 一.设置方法 ​1.applicationUrl属性​ ​2.环境变量​ ​3.命令行参数​ ​4.UseUrls方法​ .NET5版本 .NET6版本 ​5.UseKestrel方法​ ​6.WebApplication.Urls.Add方法​ ​7.appsettings.json文件​ 二.优先级 三.结论 前言: 上次,我们讨论了如何通过配置或代码方式修改启动地址:<​ ​ASP.NET Core启动地址配置方法及优先级顺序​​>.不过是基于 .NET 5 版本的. 由于

  • 基于 .NET 6 的ASP.NET Core启动地址配置方法及优先级顺序

    目录 前言: 一.设置方法 ​1. applicationUrl 属性​ ​2.环境变量​ ​3.命令行参数​ ​4. UseUrls 方法​ .NET 5 版本 .NET 6 版本 ​5. UseKestrel 方法​ ​6. WebApplication.Urls.Add 方法​ ​7. appsettings.json 文件​ 二.优先级 三.结论 前言: 上次,我们讨论了如何通过配置或代码方式修改启动地址:<​​ASP.NET Core启动地址配置方法及优先级顺序​​>.不过是基于 .

  • ASP.NET Core启动地址配置方法及优先级顺序

    目录 一.设置方法 1.applicationUrl属性 2.环境变量 3.命令行参数 4.UseUrls方法 5.UseKestrel方法 二.优先级 结论: 默认情况下,ASP.NET Core使用下列2个启动地址: http://localhost:5000https://localhost:5001 同时,我们也可以通过配置或代码方式修改启动地址. 那么,这几种修改方式都是什么?谁最后起作用呢? 一.设置方法 1.applicationUrl属性 launchSettings.json文

  • 理解ASP.NET Core 启动类(Startup)

    目录 准备工作:一份ASP.NET Core Web API应用程序 Startup类 Startup构造函数 ConfigureServices Configure 省略Startup类 IStartupFilter IHostingStartup HostingStartup 程序集 HostingStartup 特性 激活HostingStarup程序集 1.使用环境变量(推荐) 2.在程序中配置 多环境配置 环境配置方式 基于环境的 Startup 1.将IWebHostEnvironm

  • ASP.NET Core环境变量配置和启动设置讲解

    ASPNETCORE_ENVIRONMENT ASP.NET Core控制环境切换最核心的东西是“ASPNETCORE_ENVIRONMENT”环境变量,它直接控制当前应用程序运行的环境类型.您可以通过在项目上右键菜单选择“属性”选项,然后切换到“调试”标签来修改此环境变量. 此环境变量框架默认提供了三个值,当然您也可以定义其它的值: Development(开发) Staging(预演) Production(生产) 我们在Startup.cs文件中,可以使用相应的方法来控制应用程序的行为.以

  • 在IIS上部署ASP.NET Core Web API的方法步骤

    对于本文,我想与您分享有关如何在IIS上部署ASP.NET Core Web API的指南.我将指导您安装Visual Studio 2019,.NET Core Runtime 3.0.我还确保我逐步引导您在服务器(Web IIS)中启用它,使用no受管代码选项创建新的应用程序池,创建ASP.NET Core Web API项目以及发布ASP.NET Core Web API. 了解并遵循正确的步骤来准备开发和部署环境后,在IIS上部署ASP.NET Core Web API就是一件容易的事.

  • ASP.NET Core Authentication认证实现方法

    追本溯源,从使用开始 首先看一下我们通常是如何使用微软自带的认证,一般在Startup里面配置我们所需的依赖认证服务,这里通过JWT的认证方式讲解 public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(authOpt => { authOpt.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;

  • ASP.NET Core中的配置详解

    ASP.NET Core 提供了一个灵活可扩展,基于键值的配置系统. 但是配置系统独立于ASP.NET Core是Microsoft.Extensions 类库的部分. 它可以用于任何类型的应用程序 1.以键-值对的形式读取配置 appsettings.json 文件: { "Position": { "Title": "编辑器", "Name": "Joe Smith" }, "MyKey&qu

  • ASP.NET Core基础之Main方法讲解

    为什么ASP.NET Core采用Main方法? 需要记住的最重要的一点是,ASP.NET Core Web 应用程序最初作为控制台应用程序启动,Main() 方法是应用程序的入口点.因此,当我们执行ASP.NET Core Web应用程序时,首先它寻找 Main() 方法,这是执行开始的方法.然后,Main()方法将ASP.NET配置并启动它.此时,应用程序将成为ASP.NET Core Web应用程序. 如果进一步查看 Main() 方法的正文,则会发现它通过将命令行参数 args 作为参数

  • ASP.NET Core托管模型CreateDefaultBuilder()方法

    让我们讨论一下 CreateDefaultBuilder() 方法究竟对配置和设置 Web 服务器的作用.从托管的角度来看,一个ASP.NET Web 应用程序可以通过两种方式托管,即进程托管(InProcess)或进程外托管(OutOfProcess). 注:当我们使用任何模板创建新 ASP.NET Core Web 应用程序时,默认情况下,使用InProcess 托管创建项目文件,该托管用于在 IIS 或 IIS Express 方案中托管应用程序. 如何验证是否在进程内? 为了验证上面的观

随机推荐