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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;一个简单的工具调用和实现方式需要针对不同…