dotnet publish 发布后的项目,例如asp.net core mvc项目如何在ubuntu中运行,并可外部访问

发布于:2025-07-11 ⋅ 阅读:(47) ⋅ 点赞:(0)

复制到 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

网站公告

今日签到

点亮在社区的每一天
去签到