asp.net core如何自定义端口/修改默认端口
.net core运行的默认端口是5000,但是很多时候我们需要自定义端口。有两种方式
写在Program的Main方法里面
添加 .UseUrls()
var host = new WebHostBuilder()
    .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory())
    //添加这一行
    .UseUrls("http://*:5001", "http://*:5002")
    .UseIISIntegration()
    .UseStartup<Startup>()
    .Build();
添加 .UseSetting()
var host = new WebHostBuilder()
    .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory())
    //添加这一行
    .UseSetting(WebHostDefaults.ServerUrlsKey, "http://*:5001;http://*5002")
    .UseIISIntegration()
    .UseStartup<Startup>()
    .Build();
小结
UseUrls是UseSetting设置端口的一个封装而已,源码
public static IWebHostBuilder UseUrls(this IWebHostBuilder hostBuilder, params string[] urls)
{
    if (urls == null)
    {
        throw new ArgumentNullException(nameof(urls));
    }
    return hostBuilder.UseSetting(WebHostDefaults.ServerUrlsKey, string.Join(ServerUrlsSeparator, urls));
}
写在配置文件中
- 在项目中新建一个.json文件,例如config/hosting.json.内容:
{
  "urls": "http://*:5003;http://*:5004"
}
- Main方法添加配置
// using Microsoft.Extensions.Configuration;
public static void Main(string[] args)
{
    var config = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        // 这里添加配置文件
        .AddJsonFile(Path.Combine("config", "hosting.json"), true)
        .Build();
    var host = new WebHostBuilder()
        .UseKestrel()
        // 添加配置
        .UseConfiguration(config)
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();
    host.Run();
}
- 最后别忘了在project.json中添加输出配置:(像我就直接把整个config目录放进去了)
"publishOptions": {
  "include": [
    "wwwroot",
    "**/*.cshtml",
    "appsettings.json",
    "web.config",
    "config"
  ]
},
小结
其实这种方法最终也是变成UseSetting,用appsetting.json也可以做到,源码:
public static IWebHostBuilder UseConfiguration(this IWebHostBuilder hostBuilder, IConfiguration configuration)
{
    foreach (var setting in configuration.AsEnumerable())
    {
        hostBuilder.UseSetting(setting.Key, setting.Value);
    }
    return hostBuilder;
}
用环境变量
- 环境变量的名字ASPNETCORE_URLS(过时的名字是:ASPNETCORE_SERVER.URLS)
- 设置临时环境变量
- linux:export ASPNETCORE_URLS="http://*:5001"
- windows:set ASPNETCORE_URLS="http://*:5001"
 
- linux:
- 设置完之后运行即可
 dotnet xxx.dll
小结
环境变量的方法为何能实现?在WebHostBuilder的构造函数中存在着这么一句:
_config = new ConfigurationBuilder()
                .AddEnvironmentVariables(prefix: "ASPNETCORE_")
                .Build();
总结
前两种方法都是会变成UseSetting,而UseSetting的实现也很简单
public IWebHostBuilder UseSetting(string key, string value)
{
    _config[key] = value;
    return this;
}
只是设置了个key,value。环境变量方法最后也是设置个key,value。
那么,那种方法比较好呢?个人认为环境变量方法好一点,灵活,不用在代码里面多写一句代码。
注意: 在上面中设置端口的http://*:xxx中,*别改成localhost或者ip,因为这样要么外网访问不了要么内网访问不了,相当蛋疼,写*改变环境也不用改,多爽!
asp.net core如何自定义端口/修改默认端口的更多相关文章
- 如何在ASP.NET Core中自定义Azure Storage File Provider
		文章标题:如何在ASP.NET Core中自定义Azure Storage File Provider 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p ... 
- ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core
		前言 原本本节内容是不存在的,出于有几个人问到了我:我想使用ASP.NET Core Identity,但是我又不想使用默认生成的数据库表,想自定义一套,我想要使用ASP.NE Core Identi ... 
- 【Docker】Asp.net core在docker容器中的端口问题
		还记得[One by one系列]一步步学习docker(三)--实战部署dotnetcore中遇到的问题么?容器内部启动始终是80端口,并不由命令左右. docker run --name cont ... 
- ASP.NET Core MVC – 自定义 Tag Helpers
		ASP.NET Core Tag Helpers系列目录,共四篇: ASP.NET Core MVC Tag Helpers 介绍 ASP.NET Core MVC – Caching Tag Hel ... 
- 如何在Spring boot中修改默认端口
		文章目录 介绍 使用Property文件 在程序中指定 使用命令行参数 值生效的顺序 如何在Spring boot中修改默认端口 介绍 Spring boot为应用程序提供了很多属性的默认值.但是有时 ... 
- centos6.5 ssh安全优化,修改默认端口名,禁止root远程登录
		一.修改默认端口号 第一步: vi /etc/sysconfig/iptables 添加修改后的端口号的配置 -A INPUT -p tcp -m state --state NEW -m tcp - ... 
- Memcached修改默认端口
		windows下修改memcached服务的端口号(默认端口:11211)如果不是作为服务启动memcached的话,memcached -p 端口号就可以了. 通过修改注册表可以简单实现 运行:re ... 
- MySQL5.7添加授权账号及修改默认端口
		1.修改默认端口 打开配置文件 vim /etc/my.cnf 分别添加端口在client.mysql节点 [client] port=15099 [mysqld] port=15099 需要注意se ... 
- tomcat修改默认端口
		1.webserver: tomcat2.version: Apache Tomcat/7.0.293.operation: 修改默认端口 3.1 修改tomcat目录下的/conf/server ... 
随机推荐
- squid日志分析
			sarg对squid的日志流量分析报表(按小时,天,周生成) 1.SARG介绍 SARG的全称是:Squid Analysis Report GeneratorSARG非常好用的Squid日志分析工具 ... 
- 实体处理模块IEntityModule
			在2015年7月16日,XCode新增了实体处理模块IEntityModule,用于拦截实体对象添删改操作. 该接口参考IHttpModule设计理念,横切在实体对象的关键生命周期之中,以达到多实体类 ... 
- 关于获得当前的index的方法
			每日一句English(start from today): In the previous section we just displayed a list of string entered st ... 
- CSS3让文本自动换行——word-break属性
			1.依靠浏览器让文本自动换行 浏览器本身都自带着让文本自动换行的功能. 2.指定自动换行的处理方法 在CSS3中,可以使用word-break属性来自己决定自动换行的处理方法. div{ word-b ... 
- HDU2243 考研路茫茫――单词情结
			Description 背单词,始终是复习英语的重要环节.在荒废了3年大学生涯后,Lele也终于要开始背单词了. 一天,Lele在某本单词书上看到了一个根据词根来背单词的方法.比如"ab&q ... 
- bzoj:1941: [Sdoi2010]Hide and Seek
			1941: [Sdoi2010]Hide and Seek Time Limit: 16 Sec Memory Limit: 162 MBSubmit: 531 Solved: 295[Submi ... 
- centos7 hue安装
			p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ... 
- sass 安装与使用
			1.安装. 安装ruby :http://rubyinstaller.org/downloads 创建项目:在f盘创建一个名为sass的文件夹 ruby命令行:f: ruby命令行:cd sass r ... 
- python列表二
			比如说要交换两个的顺序,用中间变量temp即可,和java的方法一样 >>> mix[1, '小尹', 5, '小虎', 3.5, [1, 2, 2], '葫芦娃', 0, '1', ... 
- java 跳出多层循环
			lableB: for(int i=0;i<10;i++){ lableA: for(int j=0;j<10;j++){ System.out.println(j); if(j==1){ ... 
