復制到 Ubuntu 上的是使用 Visual Studio 或 dotnet 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 |