当前位置: 首页 > news >正文

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.dtcms.com/a/268920.html

相关文章:

  • 自动化运维:使用Ansible简化日常任务
  • Word 怎么让字变大、变粗、换颜色?
  • 运维打铁: PostgreSQL 数据库性能优化与高可用方案
  • Flutter 入门
  • 能源管理综合平台——分布式能源项目一站式监控
  • 海岛分布式能源系统调度 粒子群算法优化
  • 基于拉普拉斯变换与分离变量法的热传导方程求解
  • 网安系列【10】之深入浅出CSRF攻击:从原理到实战(DVWA靶场演示)
  • 商城小程序的UI设计都有哪些风格
  • 磷酸镧:多功能稀土材料,助力未来科技
  • 如何排查服务器中已经存在的后门程序?
  • SOC估算综述:电池管理中的关键挑战与前沿技术
  • 【数据结构】第七弹——Priority Queue
  • 苹果开源 DiffuCoder :用于代码生成的掩码扩散模型
  • 深度学习机器学习比较
  • 安卓10.0系统修改定制化____系列 ROM解打包 修改 讲解 与安卓9文件差异
  • 【Godot4】正则表达式总结与测试
  • VSCODE创建JS项目
  • 第二届虚拟现实、图像和信号处理国际学术会议(VRISP 2025)
  • 网络安全之内网渗透实操
  • SpringBoot-Freemarker导出word
  • 基于pycharm,python,flask,uniapp,sklearn机器学习,orm,mysql,在线恶意流量检测系统开发
  • python数据结构与算法-递归
  • 当“漏洞”成为双刃剑——合法披露与非法交易的生死线在哪里?
  • Kafka 消费者组再平衡优化实践指南
  • HTTP 重定向
  • python 数据分析 单细胞测序数据分析 相关的图表,常见于肿瘤免疫微环境、细胞亚群功能研究 ,各图表类型及逻辑关系如下
  • Python实现文件夹中文件名与Excel中存在的文件名进行对比,并进行删除操作
  • 护照阅读器在酒店应用场景
  • 【机器学习笔记 Ⅱ】8 多标签和多类别