You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从MacOS Finder运行ASP.NET Core可执行文件报错:WebRootPath未找到

问题解决:Finder运行ASP.NET Core可执行文件报WebRootPath找不到

可以从Finder中运行该可执行文件,报错的核心原因是Finder双击启动时,程序的工作目录默认是当前用户的Home目录(/Users/scott),而非可执行文件所在的目录,导致程序找不到同目录下的wwwroot文件夹。以下是两种可行的解决方法:

方法一:修改程序代码,强制指定WebRootPath路径

在Program.cs中添加代码,让程序自动获取自身所在目录,并指向该目录下的wwwroot,不依赖工作目录:

using System.Reflection;
using Microsoft.AspNetCore.Builder;

var builder = WebApplication.CreateBuilder(args);

// 获取当前可执行文件的所在目录
var exeDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
// 强制设置WebRootPath为可执行文件目录下的wwwroot
builder.WebHost.UseWebRoot(Path.Combine(exeDir, "wwwroot"));

// 后续的其他配置代码...
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();

var app = builder.Build();

// ... 中间件配置代码
app.UseStaticFiles();
app.UseRouting();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");

app.Run();

修改后重新发布应用,即可直接从Finder双击运行。

方法二:通过Shell脚本间接启动程序

如果不想修改代码,可以创建一个Shell脚本,先切换到可执行文件所在目录再启动程序:

  1. 在可执行文件BlazorApp1的同目录下,创建一个名为启动应用.sh的文件
  2. 打开该文件,写入以下内容:
#!/bin/bash
# 切换到脚本所在的目录
cd "$(dirname "$0")"
# 启动应用
./BlazorApp1
  1. 打开终端,进入该目录,执行以下命令给脚本添加执行权限:
chmod +x 启动应用.sh

之后双击这个Shell脚本,即可正常启动应用。

内容的提问来源于stack exchange,提问作者Scott Kuhl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 06:53:16