一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - asp.net core 修改默認端口的幾種方法

asp.net core 修改默認端口的幾種方法

2020-07-05 14:52一線碼農 ASP.NET教程

這篇文章主要介紹了asp.net core 修改默認端口的幾種方法,文中講解非常詳細,代碼和圖片幫助大家更好的理解,感興趣的朋友可以了解下

  一般情況下,aspnetcore發布后的默認端口是5000,這個大家都知道,而且默認骨架代碼中沒有看到任何讓你輸入的ip地址和端口號,但作為程序員的我們,不希望

被框架所管制,那如何實現默認端口的修改呢?

骨架代碼:

?
1
2
3
4
5
6
7
8
9
10
11
public class Program
 {
 public static void Main(string[] args)
 {
  CreateWebHostBuilder(args).Build().Run();
 }
 
 public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
  WebHost.CreateDefaultBuilder(args)
  .UseStartup<Startup>();
 }

發布如下:

asp.net core 修改默認端口的幾種方法

一:解決辦法1(UseUrls)

       骨架代碼就那么幾行,很容易在這個IWebHostBuilder中找到一個叫做UseUrls的方法,從注解中可以看得出來讓WebHost監聽指定的端口號,截圖如下:

asp.net core 修改默認端口的幾種方法

那么答案就出來了,你需要自己來指定一下端口,改完之后截圖如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
public class Program
 {
 public static void Main(string[] args)
 {
  CreateWebHostBuilder(args).Build().Run();
 }
 
 public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
  WebHost.CreateDefaultBuilder(args)
   .UseUrls("http://*:8080")
  .UseStartup<Startup>();
 }

asp.net core 修改默認端口的幾種方法

但是在發布之后,你突然發現,臥槽,端口沖突了,我想換端口,tmd我還得為此再發一次程序,一個字麻煩,說一送一。差點被砍到的第一反應就是把硬編碼

送到配置文件中。

二:解決辦法2 (host.json)

       你會突然發現要使用到的Configuration屬性只能在Startup類中,畢竟在WebHost的Build之前ServiceCollection都沒有初始化,哪里有統一化的配置系統呢,

 那怎么辦,還能怎么辦,自己定義一個Configuration了,然后修改的步驟如下:

1. 新增一個host.json,名字隨便定義,自己看得懂就行啦。

?
1
2
3
{
 "url": "http://*:9099"
}

asp.net core 修改默認端口的幾種方法

2. webhost代碼修改

?
1
2
3
4
5
6
7
8
9
10
11
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
 {
  var configuration = new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory)
      .AddJsonFile("host.json")
      .Build();
 
  var url = configuration["url"];
 
  return WebHost.CreateDefaultBuilder(args).UseUrls(configuration["url"])
       .UseStartup<Startup>();
 }

asp.net core 修改默認端口的幾種方法

      問題倒是解決了,但是總發現有一點不爽,突然新來的Configration就好像半路殺出的陳咬金,所以說如果將陳咬金收編過來就完美了。

三:不夠優雅后的整合

      接下來你很容易會在WebHostBuilder中發現另一個方法UseConfiguration,看參數就是用來接收ConfigurationRoot的,所以就把代碼修改如下:

?
1
2
3
4
5
6
7
8
9
10
11
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
 {
  var configuration = new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory)
      .AddJsonFile("host.json")
      .Build();
 
  //var url = configuration["url"];
 
  return WebHost.CreateDefaultBuilder(args).UseConfiguration(configuration)
       .UseStartup<Startup>();
 }

        但是這里有一個問題,asp.netcore能識別我自定義的url嗎?肯定是不能識別的啦,那問題就是,AspnetCore模式會用哪一個key作為url的地址呢??

要找到答案的話得需要從源碼上啦,從UseUrls入手吧。

asp.net core 修改默認端口的幾種方法

從上面可以看到,UseUrls默認是使用 WebHostDefaults.ServerUrlsKey 作為url的key的,然后繼續F12看一下它的 內容是什么?

asp.net core 修改默認端口的幾種方法

   好了,真想大白了,原來是urls,接下來我只需要把host.json 的url改成urls就可以了,對吧。

?
1
2
3
{
 "urls": "http://*:9099"
}

asp.net core 修改默認端口的幾種方法

 四:解決辦法3 (使用docker)

      如果你不想做出任何改變,不想做任何退步,那沒辦法,只能把你關進docker里啦。

1. dockerfile

?
1
2
3
4
5
6
7
8
9
10
11
FROM microsoft/dotnet:2.1-aspnetcore-runtime
 
MAINTAINER [email protected]
 
RUN mkdir /data
 
COPY ./publish/ /data
 
WORKDIR /data
 
CMD [ "dotnet","WebApplication1.dll" ]

2. publish 文件夾

   在dockerfile的同級目錄下,新建一個publish文件夾用來存放當前dll文件。

asp.net core 修改默認端口的幾種方法

3. 通過build從dockerfile中構建鏡像

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@localhost tsweb]# docker build --rm -f ts.dockerfile -t a/netcore:v1 .
Sending build context to Docker daemon 2.56 kB
Step 1/6 : FROM microsoft/dotnet:2.1-sdk
 ---> bde01d9ed6eb
Step 2/6 : MAINTAINER [email protected]
 ---> Using cache
 ---> 3af0c3f7c416
Step 3/6 : RUN mkdir /data
 ---> Using cache
 ---> 97137ffc5449
Step 4/6 : COPY ./publish/ /data
 ---> Using cache
 ---> 77a94f1a0b8f
Step 5/6 : WORKDIR /data
 ---> Using cache
 ---> 6778c2054a7b
Step 6/6 : CMD dotnet WebApplication1.dll
 ---> Running in e4a69b32e702
 ---> 9ed3a9769610
Removing intermediate container e4a69b32e702
Successfully built 9ed3a9769610

4. 最后啟動鏡像,用8888綁定到默認的5000端口

?
1
2
[root@localhost tsweb]# docker run -d -p 8888:5000 --name a-webcore-v1 a/netcore:v1
f94c727b98d5654aa560308752c2af7cde550b6cc06c520bd438e4ccf1fa616d

5. 然后你清楚的看到8888端口已經打開了,但是卻不能訪問,尷尬。。。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost tsweb]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address  Foreign Address  State PID/Program name
tcp 0 0 192.168.122.1:53 0.0.0.0:*  LISTEN 1834/dnsmasq
tcp 0 0 0.0.0.0:22  0.0.0.0:*  LISTEN 1135/sshd
tcp 0 0 127.0.0.1:631  0.0.0.0:*  LISTEN 1136/cupsd
tcp 0 0 127.0.0.1:25  0.0.0.0:*  LISTEN 1582/master
tcp6 0 0 :::3306   :::*   LISTEN 2451/mysqld
tcp6 0 0 :::22   :::*   LISTEN 1135/sshd
tcp6 0 0 ::1:631   :::*   LISTEN 1136/cupsd
tcp6 0 0 :::8888   :::*   LISTEN 9531/docker-proxy-c
tcp6 0 0 ::1:25   :::*   LISTEN 1582/master
[root@localhost tsweb]#

asp.net core 修改默認端口的幾種方法

6. 解決這個問題的第一步就要看一下 容器中真的開放出來了5000端口嗎,可通過docker logs 或 docker ps 查看

?
1
2
3
4
5
6
[root@localhost tsweb]# docker logs b-webcore-v1
Hosting environment: Production
Content root path: /data
Now listening on: http://[::]:80
Application started. Press Ctrl+C to shut down.
[root@localhost tsweb]#

  原來開放的是80端口哈~~~~  那就簡單了,把原來的容器給刪了,重新生成一個容器再映射一下就好啦。

?
1
2
3
4
5
[root@localhost tsweb]# docker rm -f b-webcore-v1
b-webcore-v1
[root@localhost tsweb]# docker run -d -p 8888:80 --name b-webcore-v1 b/netcore:v1
e58039e02740e37cc431c1176fbf586ab19b02bd9331040e4719e9d46e51627d
[root@localhost tsweb]#

asp.net core 修改默認端口的幾種方法

終于解決了,好了,本篇就說到這里,希望對你有幫助。

以上就是asp.net core 修改默認端口的幾種方法的詳細內容,更多關于asp.net core 修改默認端口的資料請關注服務器之家其它相關文章!

原文鏈接:https://www.cnblogs.com/huangxincheng/p/9569133.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产亚洲欧美日韩俺去了 | 天天色踪合 | 按摩椅play啊太快了h | www.一区二区三区.com | 日本免费的一级绿象 | 午夜影视免费 | 亚洲视频男人的天堂 | 青青草成人在线观看 | 国产精品高清一区二区三区不卡 | 99re热这里只有精品视频 | 美女扒开胸罩露出胸大乳 | 我被黄总征服的全过程 | 情缘1完整版在线观看 | 亚洲国产日韩欧美在线vip1区 | 特级淫片大乳女子高清视频 | 国产天天在线 | 亚洲系列第一页 | 亚洲国产成人久久精品hezyo | 久久久亚洲国产精品主播 | 97se狠狠狠狠狼亚洲综合网 | 亚洲成人黄色 | 日韩一区二区不卡 | 亚洲欧洲日产v特级毛片 | 天天综合网网欲色 | 国产精品亚洲va在线观看 | 国产香蕉国产精品偷在线观看 | 免费人成在线观看视频播放 | 香蕉久久一区二区三区 | 美国美女hd18 | 国产一区二区三区丶四区 | julia ann多人乱战 | 国产精品密播放国产免费看 | 2021国产精品露脸在线 | 国产精品天天看特色大片不卡 | 色综合亚洲天天综合网站 | 亚洲 欧美 偷自乱 图片 | 91国语精品自产拍在线观看一 | 午夜国产在线 | 嫩草影院永久入口在线观看 | 午夜福利08550 | 国产精品久久国产精品99 |