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