默认情况下,ASP.NET Core应用程序监听以下URL:

在这篇文章中,我展示了5种不同的方式来更改您的应用程序监听的URL。

  • 在Program.cs中使用 UseUrls()
  • 环境变量 - 使用DOTNET_URLS或者 ASPNETCORE_URLS
  • 命令行参数 - 设置命令行参数--urls
  • launchSettings.json - 设置 applicationUrl 属性
  • KestrelServerOptions.Listen() - 使用 Listen() 手动使用配置Kestrel服务器的地址

我将在下面更详细地介绍每个选项。

UseUrls()

设置绑定URL的第一个也是最简单的方法,在配置IWebHostBuilder的时候使用UseUrls()进行硬编码。

public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
} public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseUrls("http://localhost:5003", "https://localhost:5004");
});
}

环境变量

.NET Core使用两种类型的配置:

  • DOTNET_URLS
  • ASPNETCORE_URLS

如果您同时设置了这两个环境变量,那么ASPNETCORE_URLS参数优先。

您可以用不同的方式设置环境变量。例如,使用命令行:

setx ASPNETCORE_URLS "http://localhost:5001"

使用powershell

$Env: ASPNETCORE_URLS = "http://localhost:5001"

使用bash:

export ASPNETCORE_URLS="http://localhost:5001;https://localhost:5002"

如上所示,您还可以通过使用分号分隔多个地址来传递多个地址以进行监听(使用HTTP或HTTPS)。

命令行参数

设置主机配置值的另一种方法是使用命令行。如果设置了命令行参数,那么会覆盖环境变量的值, 只需使用--urls参数:

dotnet run --urls "http://localhost:5100"

和上面一样,您可以通过使用分号将多个URL分开来设置多个URL:

dotnet run --urls "http://localhost:5100;https://localhost:5101"

环境变量和命令行参数可能是在生产环境中为应用程序设置URL的最常见方法,但是它们对于本地开发来说有点麻烦。通常使用launchSettings.json会更容易。

launchSettings.json

大多数 .NET项目模板在Properties文件夹中都包含launchSettings.json文件,这个文件包含了启动.NET Core应用程序的各种配置文件。

{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:38327",
"sslPort": 44310
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"TestApp": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

launchSettings.json还提供了environmentVariables参数,您可以用它来设置环境变量,就像上面这样,然后我们可以选择不同的启动类型:

KestrelServerOptions.Listen

默认情况下,几乎所有的.NET Core应用程序都配置了Kestrel,如果需要,您可以手动配置Kestrel的端点,也可以配置KestrelServerOptions。

public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
} public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseKestrel(opts =>
{
// Bind directly to a socket handle or Unix socket
// opts.ListenHandle(123554);
// opts.ListenUnixSocket("/tmp/kestrel-test.sock");
opts.Listen(IPAddress.Loopback, port: 5002);
opts.ListenAnyIP(5003);
opts.ListenLocalhost(5004, opts => opts.UseHttps());
opts.ListenLocalhost(5005, opts => opts.UseHttps());
}); });
}

我个人没有以这种方式在Kestrel中设置监听端点,但是很高兴知道可以根据需要完全控制Kestrel。

总结

在这篇文章中,我展示了五种不同的方式来设置应用程序监听的URL。UseUrls()是最简单的一种,但通常不适合在生产中使用, launchSettings.json文件是在开发环境中设置的URL是非常有用的。 在生产中我们通常使用命令行参数--urls或者环境变量ASPNETCORE_URLS和DOTNET_URLS, 希望对您有帮助。

原文链接: https://andrewlock.net/5-ways-to-set-the-urls-for-an-aspnetcore-app/

最后

欢迎扫码关注我们的公众号 【全球技术精选】,专注国外优秀博客的翻译和开源项目分享,也可以添加QQ群 897216102

5种设置ASP.NET Core应用程序URL的方法的更多相关文章

  1. 在Mac下运行ASP.NET Core应用程序

    在Mac下运行ASP.NET Core应用程序 通过参照.NET Core相关官方文档,在我的Mac电脑上用Visual Studio Code创建了我的第一个ASP.NET应用. 开发环境搭建 首先 ...

  2. Mac下运行ASP.NET Core应用程序

    Mac下运行ASP.NET Core应用程序 在Mac下运行ASP.NET Core应用程序 通过参照.NET Core相关官方文档,在我的Mac电脑上用Visual Studio Code创建了我的 ...

  3. 让你的ASP.NET Core应用程序更安全

    让你的ASP.NET Core应用程序更安全 对于ASP.NET Core应用程序,除了提供认证和授权机制来保证服务的安全性,还需要考虑下面的一些安全因素: CSRF 强制HTTPS 安全的HTTP ...

  4. windows/Linux下设置ASP.Net Core开发环境并部署应用

    10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用 创建和开发ASP.NET Core应用可以有二种方式:最简单的方式是通过Visual Studio 2017 ...

  5. 使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序

    说在前面 在阅读本文之前,您必须对 Docker 的中涉及的基本概念以及常见命令有一定了解,本文侧重实战,不会对相关概念详述. 同时请确保您本地开发机器已完成如下安装: Docker 18.06 或更 ...

  6. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)(转载)

    本文结构 ASP.NET Core应用程序的构建 ASP.NET Core应用程序容器化所需注意的问题 应用程序的配置信息 端口侦听 ASP.NET Core的容器版本 docker镜像构建上下文(B ...

  7. ASP.NET Core应用程序的参数配置及使用(转载)

    本文结构 提前准备 参数配置方式 appsettings.json 环境变量 命令行参数 在控制器中使用配置参数 注入IConfiguration对象 注入IOptions对象 总结 应用程序的开发不 ...

  8. (转) 将ASP.NET Core应用程序部署至生产环境中(CentOS7)

    原文链接: http://www.cnblogs.com/ants/p/5732337.html 阅读目录 环境说明 准备你的ASP.NET Core应用程序 安装CentOS7 安装.NET Cor ...

  9. ASP.NET Core 中文文档 第二章 指南(1)用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序

    原文:Your First ASP.NET Core Application on a Mac Using Visual Studio Code 作者:Daniel Roth.Steve Smith ...

随机推荐

  1. 获取网页url中的参数

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Python语言程序设计---函数的定义与使用

    推荐一个Python学习交流的q群:610380249 在学习Python的过程中,有什么不懂的问题都可以发群里,一起讨论. 1 函数的理解和定义 函数是一段代码的表示,所指定的参数是一种占位符,如果 ...

  3. .net code+vue 文件上传

    后端技术 .net code 官方文档 https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/file-uploads?view=aspnet ...

  4. 图像分类学习:X光胸片诊断识别----迁移学习

    引言   刚进入人工智能实验室,不知道是在学习机器学习还是深度学习,想来他俩可能是一个东西,查阅之后才知道这是两个领域,或许也有些交叉,毕竟我也刚接触,不甚了解.   在我还是个纯度小白之时,写下这篇 ...

  5. JavaScript中的Object类型!

    3.4.8 Object 类型 ECMAScript 中的对象其实就是一组数据和功能的集合.对象通过 new 操作符后跟对象类型的名称来创建.开发者可以通过创建 Object 类型的实例来创建自己的对 ...

  6. hessian-serialization

    http://hessian.caucho.com/doc/hessian-serialization.html Table of Contents 1.  Introduction2.  Desig ...

  7. 策略模式 VS 状态模式

    策略模式 VS 状态模式 策略模式 VS 状态模式 | 菜鸟教程 https://www.runoob.com/w3cnote/state-vs-strategy.html

  8. Optimal asymmetric encryption padding 最优非对称加密填充(OAEP)

    SubtleCrypto.decrypt() - Web APIs | MDN https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypt ...

  9. Paginator Django 分页 When QuerySets are evaluated QuerySets 执行原理 QuerySets are lazy 惰性执行 访问db取数据的时机

    https://docs.djangoproject.com/en/2.2/topics/pagination/ Paginator objects¶ The Paginator class has ...

  10. P4826

    总的来说, 这道题只考查了单纯的建图和最大生成树 但这却是蓝题(问号 题意 题意的理解比较麻烦 简单说就是 n 支队伍比赛,i 号队伍和 j 号队伍比赛可获得 i ^ j 的分数,然后其中一支队伍会输 ...