ASP.NET Core设置URLs的几种方法
前言
在使用ASP.NET Core 3.1开发时,需要配置服务器监听的端口和协议,官方帮助文档进行简单说明,文档中提到了4种指定URL的方法
- 设置
ASPNETCORE_URLS
环境变量; - 使用
dotnet --urls
命令行参数; - 使用
urls
作为键进行配置; - 使用
UseUrls
扩展方法;
为便于讲清楚URLs设置方法,创建名为AspNetCoreUrl
的ASP.NET Core Web API程序进行说明,默认情况下,启动ASP.NET Core后,监听以下URLs:
URL格式
主要有三种URL格式表达方式,可以查看官方文档(https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#url-prefixes)
格式1:{scheme}://{loopbackAddress}:{port}
,例如http://localhost:5000/
、https://localhost:5001/
格式2:{scheme}://{IPAddress}:{port}
,例如http://127.0.0.1:5000/
、https://192.168.1.100:5001/
格式3:{scheme}://*:{port}
,例如http://*:5000/
、https://domain.com:5001/
前提条件
在开始测试几种URLs设置方法前,需要先生成AspNetCoreUrl
程序,然后在生成的根目录下打开命令行工具进行相应的测试
如图,我这里的程序根目录为D:\AspNetCoreUrl\AspNetCoreUrl\bin\Debug\netcoreapp3.1
,使用的终端为微软官方的Windows PowerShell
方法1 使用环境变量
在不修改AspNetCoreUrl
任何源代码的情况下(即创建项目时的程序默认状态)生成程序,定位到生成的根目录下,打开命令行终端
# 环境变量仅在当前命令行窗口生效
$Env:ASPNETCORE_URLS = "http://localhost:7000;https://localhost:7010"
# 或者使用DOTNET_URLS环境变量同样可生效
$Env:DOTNET_URLS = "http://localhost:8000;https://localhost:8010"
# 运行AspNetCoreUrl程序
dotnet AspNetCoreUrl.dll
如果使用Windows命令行(即cmd命令行),使用下面的方式设置
# 环境变量仅在当前命令行窗口生效
set ASPNETCORE_URLS=http://localhost:7000;https://localhost:7010
# 将ASPNETCORE_URLS变量保存到用户环境变量中
setx ASPNETCORE_URLS "http://localhost:7000;https://localhost:7010"
# 加/m参数,将ASPNETCORE_URLS变量保存到系统环境变量中
setx ASPNETCORE_URLS "http://localhost:7000;https://localhost:7010" /m
# 运行AspNetCoreUrl程序
dotnet AspNetCoreUrl.dll
注意:使用setx设置环境变量后,需要打开新的Windows命令行窗口才会使用环境变量生效
在Linux系统中使用以下命令设置环境变量
# 环境变量仅在当前终端生效,关闭终端后需要重新设置
export ASPNETCORE_URLS="http://localhost:7000;https://localhost:7010"
方法2 使用命令行参数
在生成程序的根目录下,使用dotnet --urls
命令,并带上urls参数
dotnet AspNetCoreUrl.dll --urls "http://localhost:7001;https://localhost:7011"
方法3 使用配置文件
在生成程序的根目录下,打开appsettings.json
文件,添加url配置项,然后双击AspNetCoreUrl.exe
运行
{
"urls":"http://localhost:7002;http://localhost:7012"
}
运行结果如下图
方法4 使用UseUrls
这种方法需要修改源代码,打开Program.cs
文件,修改CreateHostBuilder
方法内容,主要是添加UseUrls扩展方法然后生成程序。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
// 使用UseUrls设置监听的端口和协议
webBuilder.UseUrls("http://localhost:7003", "https://localhost:7013");
});
注意:运行前需要将appsettings.json
文件恢复到默认状态,即没有配置urls的状态,否则配置文件中设置会覆蓋代码中的方法。
方法5 使用Kestrel
这种方法并不在官方文档中,因为该方法仅限于使用Kestrel的时候生效,在创建ASP.NET Core应用程序时,默认使用Kestrel来托管应用,使用这种方法也有相应的应用场景,这里简单介绍下该方法的使用
打开Program.cs
文件,修改CreateHostBuilder
方法内容
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
// 配置Kestrel服务
webBuilder.UseKestrel(kestrelServerOptions =>
{
kestrelServerOptions.ListenLocalhost(7004);
kestrelServerOptions.ListenLocalhost(7014, listenOptions => listenOptions.UseHttps());
});
});
优先级
前面介绍的5种方法都在独立运行,如果将这5种方法同时用上,会有什么样的效果呢,下面来测试下,为了便于测试,每种方法都使用了不同的端口进行区分,下面显示了使用全部方法的运行结果:
可以看到,生效的是使用Kestrel方法,现在将Kestrel这种注释掉,运行结果如下:
可以看到此时生效的是使用命令行参数方法,如果不使用命令行参数方法,运行结果如下:
生效的是配置文件中的设置,现在删除配置文件中urls的配置,运行结果如下:
生效的是UseUrls扩展方法,现在注释掉UseUrls方法代码,运行结果如下:
生效的是环境变量,如果不设置环境变量,则使用默认值,即http://localhost:5000/
和https://localhost:5001/
。
总结
本文介绍了ASP.NET Core几种常用的设置URLs的方法,大家可以根据项目实际情况选择其中一种或集中,如果同时使用几种URLs设置方法,则需要留意配置的优先级问题,经过测试得出Kestrel > 命令行 > 配置文件 > UseUrls > 环境变量 > 默认值。
如果你想自己试一试,代码地址:
gitee:https://gitee.com/gyhgis/AspNetCoreUrl
github:https://github.com/gyhgis/AspNetCoreUrl
ASP.NET Core设置URLs的几种方法的更多相关文章
- ASP.NET Core 设置和初始化数据库 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 设置和初始化数据库 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 设置和初始化数据库 上一章节中我们已经设置和配置好了 EF ...
- ASP.Net Core下Authorization的几种方式 - 简书
原文:ASP.Net Core下Authorization的几种方式 - 简书 ASP.Net Core下Authorization的几种方式 Authorization其目标就是验证Http请求能否 ...
- 性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧
性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对 ...
- IIS7.5使用web.config设置伪静态的二种方法
转自 网上赚钱自学网 .http://www.whosmall.com/post/121 近几天公司里开发的项目有几个运行在IIS7.5上,由于全站采用的是伪静态,因此从网上找到两两种方法来实现.这两 ...
- asp.net跳转页面的三种方法比较
目前,对于学习asp.net的很多朋友来讲,实现跳转页面的方法还不是很了解.本文将为朋友们介绍利用asp.net跳转页面的三种方法,并对其之间的形式进行比较,希望能够对朋友们有所帮助. ASP.NET ...
- Android中全屏 取消标题栏,TabHost中设置NoTitleBar的三种方法(转)
Android中全屏 取消标题栏,TabHost中设置NoTitleBar的三种方法http://www.cnblogs.com/zdz8207/archive/2013/02/27/android- ...
- 服务器编程入门(13) Linux套接字设置超时的三种方法
摘要: 本文介绍在套接字的I/O操作上设置超时的三种方法. 图片可能有点宽,看不到的童鞋可以点击图片查看完整图片.. 1 调用alarm 使用SIGALRM为connect设置超时 设置方法: ...
- loadrunner:设置检查点的几种方法
判断操作是否成功,检查点是必不可少的.loadrunner中可以设置文本检查点和图片检查点,下面记录一下loadrunner设置检查点的几种方法. 前言:在回放脚本时,必须确定run-time set ...
- 如何为ASP.NET Core设置客户端IP白名单验证
原文链接:Client IP safelist for ASP.NET Core 作者:Damien Bowden and Tom Dykstra 译者:Lamond Lu 本篇博文中展示了如何在AS ...
随机推荐
- 《如何进行接口mock测试》
前言: Mock通常是指:在测试一个对象时,我们构造一些假的对象来模拟与其交互.而这些Mock对象的行为是我们事先设定且符合预期.通过这些Mock对象来测试对象在正常逻辑,异常逻辑或压力情况下工作是否 ...
- P4450-双亲数,P5221-Product,P6055-[RC-02]GCD【莫比乌斯反演,杜教筛】
除了最后一题都比较简单就写一起了 P4450-双亲数 题目链接:https://www.luogu.com.cn/problem/P4450 题目大意 给出\(A,B,d\)求有多少对\((a,b)\ ...
- 深入浅出WPF-08.Event( 事件)01
事件(Event) 首先我们来继续说一下UI组件树,因为WPF事件 的路由环境就是组件树.WPF中的树有两种,一种是逻辑树(Logical Tree),一种是可视元素树(Visual Tree).逻辑 ...
- mybatis多种查询方法
1. 查询单行,对象,并封装成一个对象 Employee getEmpById(Integer id); <select id="getEmpById" resultType ...
- SpringMVC的数据输出
使用 @Controller public class OutputController { @RequestMapping("/handle01") public String ...
- windows下编译caffe出现错误 C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe?
解决方案来自http://blog.csdn.net/u012556077/article/details/50353818
- 洛谷3176 [HAOI2015]数字串拆分 (矩阵乘法+dp)
qwq真的是一道好题qwq自己做基本是必不可能做出来的. 首先,如果这个题目只是求一个\(f\)数组的话,那就是一道裸题. 首先,根据样例 根据题目描述,我们能发现其实同样数字的不同排列,也是属于不同 ...
- websocket方案调研及实践
目录 webscoket方案调研及实践 一.使用场景 二.方案调研 1.Ajax短轮询 2.long-polling长轮询 3.iframe长连接 4.XHR-streaming 5.Websocke ...
- Java(11)方法详细介绍
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201577.html 博客主页:https://www.cnblogs.com/testero ...
- 【UE4】GAMES101 图形学作业5:光线与物体相交(球、三角面)
总览 在这部分的课程中,我们将专注于使用光线追踪来渲染图像.在光线追踪中最重要的操作之一就是找到光线与物体的交点.一旦找到光线与物体的交点,就可以执行着色并返回像素颜色. 在这次作业中,我们要实现两个 ...