dotnet publish 發布后的項目,例如asp.net core mvc項目如何在ubuntu中運行,并可外部訪問

復制到 Ubuntu 上的是使用 Visual Studiodotnet publish 命令生成的 發布后的輸出文件(publish output),而不是原始項目源代碼。

在這種情況下,確實沒有 .csproj 文件,所以不能直接用 dotnet run 啟動。但你可以通過以下方式來運行和配置這個發布后的 .NET Core 應用:


? 一、確認你的發布內容結構

發布后的目錄結構通常如下(以項目名 MyMvcApp 為例):

深色版本

MyMvcApp/
├── MyMvcApp.dll
├── MyMvcApp.deps.json
├── MyMvcApp.runtimeconfig.json
├── appsettings.json
├── appsettings.Production.json
├── wwwroot/
└── Views/

這些是編譯好的可執行文件,不需要再編譯,只需要運行即可。


? 二、運行發布后的應用

方法一:使用?dotnet YourApp.dll?直接運行

進入包含 YourApp.dll 的目錄后,運行:

bash

深色版本

dotnet MyMvcApp.dll

?? 注意:這里的 MyMvcApp.dll 是主程序集名稱,請替換為你實際的 DLL 名稱。

默認會在 http://localhost:5000 提供服務。


? 三、配置監聽地址和端口(可選)

如果你希望你的應用可以被外部訪問(比如從 Windows 瀏覽器訪問),你需要配置 Kestrel 監聽 0.0.0.0 和某個端口。

修改?Program.cs(如果還有源碼)

如果你還有源碼,可以在 Program.cs 中添加:

csharp

深色版本

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();app.Run("http://0.0.0.0:5000");

或者使用命令行參數運行(推薦)

在運行時指定 URL:

bash

深色版本

dotnet MyMvcApp.dll --urls "http://0.0.0.0:5000"

這樣就可以從 Windows 瀏覽器中訪問 http://localhost:5000 來查看網站。


? 四、配置為后臺服務(systemd 管理)

為了讓應用開機自啟并作為服務運行,建議創建一個 systemd 服務。

1. 創建服務文件

bash

深色版本

sudo nano /etc/systemd/system/myapp.service

寫入以下內容(根據實際情況修改路徑和用戶名):

ini

深色版本

[Unit]
Description=My .NET MVC Application[Service]
WorkingDirectory=/home/dministrator/wwwroot/Test
ExecStart=/usr/bin/dotnet /home/dministrator/wwwroot/Test/MyMvcApp.dll --urls http://0.0.0.0:5000
Restart=always
RestartSec=10
SyslogIdentifier=myapp
User=dministrator
Environment=ASPNETCORE_ENVIRONMENT=Production[Install]
WantedBy=multi-user.target

2. 啟動并啟用服務

bash

深色版本

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
sudo systemctl status myapp

現在你的應用就在后臺運行了,并且會隨系統啟動自動運行。


? 五、配置反向代理(如 Nginx)

如果你希望通過域名或 80/443 端口訪問,可以配置 Nginx 反向代理。

示例 Nginx 配置:

bash

深色版本

sudo nano /etc/nginx/sites-available/default

寫入:

nginx

深色版本

server {listen 80;server_name yourdomain.com;location / {proxy_pass         http://localhost:5000;proxy_http_version 1.1;proxy_set_header   Upgrade $http_upgrade;proxy_set_header   Connection keep-alive;proxy_set_header   Host $host;proxy_cache_bypass $http_upgrade;proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header   X-Forwarded-Proto $scheme;}
}

然后重啟 Nginx:

bash

深色版本

sudo systemctl restart nginx

? 六、總結:如何運行發布后的 .NET Core 應用?

操作命令
運行應用dotnet MyMvcApp.dll
指定監聽地址dotnet MyMvcApp.dll --urls "http://0.0.0.0:5000"
創建 systemd 服務創建?/etc/systemd/system/myapp.service?文件
使用 Nginx 反向代理配置 Nginx 轉發到 localhost:5000

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913405.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913405.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913405.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux多線程(十二)之【生產者消費者模型】

文章目錄生產者消費者模型為何要使用生產者消費者模型生產者消費者模型優點基于BlockingQueue的生產者消費者模型BlockingQueueC queue模擬阻塞隊列的生產消費模型單線程生產消費模型多線程生產消費模型生產者消費者模型 consumer/productor 321原則(便于記憶) 為何要使用生產…

MySQL表的操作(3)

文章目錄前言一、創建表創建表時指定屬性二、查看表查看表結構查看建表消息三、修改表修改列屬性修改列名修改表名四、刪除表總結前言 Hello! 那我們乘勝追擊,開始 表的操作! 一、創建表 首先創建一個 數據庫 testForTable mysql> create database i…

從“人工智障”到“智能助手”:集成為什么能拯救AI用戶體驗?

幾年前,當人們滿懷期待地與AI語音助手對話時,常常遭遇令人啼笑皆非的回應——“抱歉,我不明白你在說什么”“請再說一遍”甚至答非所問。AI被戲稱為“人工智障”,用戶體驗一度讓人失望。然而,近年來,隨著技…

Uniapp 自定義TabBar + 動態菜單實現教程(Vuex狀態管理詳解)

大家好,我是一諾。今天跟大家分享一下uniapp 封裝自定義底部導航欄(TabBar) 過程中的思考和實踐。通過本文,你將學會如何打造一個功能完善、可自由定制的TabBar組件! 先看效果: 支持自定義圖標和樣式動態顯…

MySQL數據庫主從復制

概述1、master開啟二進制日志記錄2、slave開啟IO進程,從master中讀取二進制日志并寫入slave的中繼日志3、slave開啟SQL進程,從中繼日志中讀取二進制日志并進行重放4、最終,達到slave與master中數據一致的狀態,我們稱作為主從復制的…

Rancher Server + Kubernets搭建云原生集群平臺

目錄Rancher Server Kubernets搭建云原生集群平臺一、環境準備1、軟件準備2、環境規劃3、掛載數據盤二、虛擬機初始化基礎配置(所有節點都需要操作)1、執行時間服務器腳本(包括配置hostName主機名)2、配置hosts文件3、配置各節點…

Java學習第八部分——泛型

目錄 一、概述 (一)定義 (二)作用 (三)引入原因 二、使用 (一)類 (二)接口 (三)方法 三、類型參數 (一&#xf…

定時點擊二次鼠標 定時點擊鼠標

定時點擊二次鼠標 定時點擊鼠標 今天分享一個定時點擊兩次的小工具。 我們在生活中,可能會遇到一些定時點擊的任務。比如說在晚上9點去發送一個群發,或者倒計時點擊一個按鈕。那么可以使用這個工具,僅適用于Windows電腦。 #定時點擊鼠標 #倒計…

Linux網絡配置與故障排除完全指南

1. ifconfig命令 - 網絡接口配置器 ifconfig(interface configurator)是Linux系統中最基礎的網絡配置工具。該命令可以初始化網絡接口、分配IP地址、啟用或禁用接口,同時還能查看接口的詳細信息。 查看網絡接口信息 # ifconfig eth0 …

Python Pytest-Benchmark詳解:精準性能測試的利器

在軟件開發的迭代過程中,性能優化如同精密手術,需要精準的測量工具。Pytest-Benchmark作為pytest生態中的性能測試插件,憑借其無縫集成能力和專業統計功能,成為Python開發者進行基準測試的首選工具。本文將深入解析其技術特性與實…

60天python訓練營打卡day51

學習目標: 60天python訓練營打卡 學習內容: DAY 51 復習日 作業:day43的時候我們安排大家對自己找的數據集用簡單cnn訓練,現在可以嘗試下借助這幾天的知識來實現精度的進一步提高 學習時間: 2025.07.04 浙大疏錦行…

支持向量機(SVM)在肺部CT圖像分類(肺癌檢測)中的實現與優化

?? 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C++, C#, Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C++、C#等開發語言,熟悉Java常用開發技術,能熟練應用常用數據庫SQL server,Oracle,mysql,postgresql等進行開發應用…

YOLOv3-SPP 深度解析:引入 SPP 結構,顯著提升目標檢測性能!

? YOLOv3-SPP 技術詳解 一、前言 YOLOv3-SPP 是在 YOLOv3 基礎上加入 SPP(Spatial Pyramid Pooling)模塊的一種改進版本,旨在提升模型對不同尺度目標的識別能力,尤其是在大目標檢測方面表現更優。 它由 Alexey Bochkovskiy 在…

負載均衡--常見負載均衡算法

負載均衡算法可以分為兩類:靜態負載均衡算法和動態負載均衡算法。 1、靜態負載均衡算法包括:輪詢,比率,優先權 輪詢(Round Robin):順序循環將請求一次順序循環地連接每個服務器。當其中某個服務…

深入解析GCC:開源的編譯器之王

在編程世界中,編譯器是將人類可讀代碼轉化為機器指令的關鍵橋梁。而GCC(GNU Compiler Collection) 無疑是這個領域最耀眼的明星之一。作為開源世界的基石,它支撐著Linux內核、眾多開源項目和商業軟件的構建。今天,我們…

https和http有什么區別

目錄 一、核心區別:是否基于加密傳輸 二、底層傳輸機制差異 三、HTTPS 的加密原理 四、應用場景差異 五、其他細節區別 總結 在網絡通信中,HTTP(Hypertext Transfer Protocol,超文本傳輸協議) 和HTTPS&#xff0…

CSS3 文本效果詳解

CSS3 文本效果詳解 引言 隨著Web技術的發展,CSS3為前端設計師和開發者提供了豐富的文本效果選項。這些效果不僅能夠增強網頁的美觀性,還能提升用戶體驗。本文將詳細介紹CSS3中的文本效果,包括文本陰影、文本描邊、文本裝飾、文本換行、文本大小寫等,并探討如何在實際項目…

MySQL 中 -> 和 ->> 操作符的區別

簡介 MySQL 5.7 或更高版本,可以使用 ->> 和 -> 運算符簡化語法這兩個操作符都是用于提取 JSON 數據的,但有一些重要區別 -> 操作符 功能:提取 JSON 對象的指定路徑的值 返回類型:返回 JSON 類型的值(可…

Vue2 day07

1.vuex的基本認知2.構建多組件共享的數據環境步驟&#xff1a;1.在自己創建的文件夾下創建腳手架2.創建三個組件### 源代碼如下App.vue在入口組件中引入 Son1 和 Son2 這兩個子組件html <template><div id"app"><h1>根組件</h1><input ty…

簡述MCP的原理-AI時代的USB接口

1 簡介隨著AI的不斷發展&#xff0c;RAG&#xff08;檢索增強生成&#xff09;和function calling等技術的出現&#xff0c;使得大語言模型的對話生成能力得到了增強。然而&#xff0c;function calling的實現邏輯比較復雜&#xff0c;一個簡單的工具調用和實現方式需要針對不同…