.net core运行的默认端口是5000,但是很多时候我们需要自定义端口。有两种方式

写在ProgramMain方法里面

添加 .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();

小结

UseUrlsUseSetting设置端口的一个封装而已,源码

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));
}

写在配置文件中

  1. 在项目中新建一个.json文件,例如config/hosting.json.内容:
{
"urls": "http://*:5003;http://*:5004"
}
  1. 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();
}
  1. 最后别忘了在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"
  • 设置完之后运行即可

    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如何自定义端口/修改默认端口的更多相关文章

  1. 如何在ASP.NET Core中自定义Azure Storage File Provider

    文章标题:如何在ASP.NET Core中自定义Azure Storage File Provider 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p ...

  2. ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core

    前言 原本本节内容是不存在的,出于有几个人问到了我:我想使用ASP.NET Core Identity,但是我又不想使用默认生成的数据库表,想自定义一套,我想要使用ASP.NE Core Identi ...

  3. 【Docker】Asp.net core在docker容器中的端口问题

    还记得[One by one系列]一步步学习docker(三)--实战部署dotnetcore中遇到的问题么?容器内部启动始终是80端口,并不由命令左右. docker run --name cont ...

  4. ASP.NET Core MVC – 自定义 Tag Helpers

    ASP.NET Core Tag Helpers系列目录,共四篇: ASP.NET Core MVC Tag Helpers 介绍 ASP.NET Core MVC – Caching Tag Hel ...

  5. 如何在Spring boot中修改默认端口

    文章目录 介绍 使用Property文件 在程序中指定 使用命令行参数 值生效的顺序 如何在Spring boot中修改默认端口 介绍 Spring boot为应用程序提供了很多属性的默认值.但是有时 ...

  6. centos6.5 ssh安全优化,修改默认端口名,禁止root远程登录

    一.修改默认端口号 第一步: vi /etc/sysconfig/iptables 添加修改后的端口号的配置 -A INPUT -p tcp -m state --state NEW -m tcp - ...

  7. Memcached修改默认端口

    windows下修改memcached服务的端口号(默认端口:11211)如果不是作为服务启动memcached的话,memcached -p 端口号就可以了. 通过修改注册表可以简单实现 运行:re ...

  8. MySQL5.7添加授权账号及修改默认端口

    1.修改默认端口 打开配置文件 vim /etc/my.cnf 分别添加端口在client.mysql节点 [client] port=15099 [mysqld] port=15099 需要注意se ...

  9. tomcat修改默认端口

    1.webserver: tomcat2.version:   Apache Tomcat/7.0.293.operation: 修改默认端口 3.1 修改tomcat目录下的/conf/server ...

随机推荐

  1. Java中的移动和复制

    public static boolean Move(File srcFile, String destPath) { // Destination directory File dir = new ...

  2. 驱动开发入门——NTModel

    上一篇博文中主要说明了驱动开发中基本的数据类型,认识这些数据类型算是驱动开发中的入门吧,这次主要说明驱动开发中最基本的模型--NTModel.介绍这个模型首先要了解R3层是如何通过应用层API进入到内 ...

  3. Centos7下配置Python3和Python2共存,以及对应版本Ipython安装配置

    1.查看是否已经安装Python Centos7默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5. 使用python -V命令查看一下是否安装Pytho ...

  4. Python学习九:列表生成式

    列表生成式,是Python内置的一种极其强大的生成list的表达式. 如果要生成一个list [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9] 可以用 range(1 , 10) ...

  5. HTTP2.0和QUIC

    最近看到腾讯云支持QUIC的文章,突然意识到还没有好好认识HTTP2.QUIC,而要认识HTTP2,就需要从HTTP1.0开始讲起,才能清楚HTTP的发展历程. HTTP1.x HTTP(HyperT ...

  6. 微信小程序在开发中遇到的问题与解决方法

    1.  √ 这种错误多半是该js文件中没有Page这个方法,就算是空的js也必须要把Page({ })写上去 2.  √ 这种错误多半是该json文件没有内容,所以必须要加上{ },就算是空内容也要加 ...

  7. 移动端吸顶(iOS与安卓)

    有的时候经常会遇到移动端吸顶效果,开始我也只是上网查了一下,分别有iOS和android两种样式,如下: /*!*Android*!*/ .head { position: fixed; top: 0 ...

  8. python 列表(list)常用操作

    a = [1,2,3,4,1,1,1,1] 删除操作 删除元素1 a.remove(1) 删除第二个元素 del a[1] 默认删除最后一个,给脚标就会删除指定脚标元素 pop() 方法 a.pop( ...

  9. inline函数不能在for循环中使用的原因

    inline函数的作用继承了宏定义的优点,没有了参数压栈,代码生成等一部分操作,并且摒弃了没有检查编译规则的缺点: 另外要注意,内联函数一般只会用在函数内容非常简单的时候,这是因为,内联函数的代码会在 ...

  10. Mybatis中常用的SQL

    1.BaseResultMap <resultMap id="BaseResultMap" type="com.stylefeng.guns.common.pers ...