.NET 5 Razor应用执行dotnet BaGet.dll报404错误,求正确用法
解决
dotnet BaGet.dll启动出现404的问题 核心原因
执行dotnet BaGet.dll时,应用的工作目录和dotnet run/直接运行exe时不一致,导致静态文件路径计算错误。dotnet run默认以项目文件所在目录作为工作目录,直接运行exe时工作目录是exe所在目录,但手动执行dotnet BaGet.dll时,当前工作目录可能不在正确位置,进而影响../BaGet.Web的路径解析。
可行解决方案
切换到正确工作目录执行命令
找到BaGet.dll所在的输出目录(通常是bin/Release/net5.0或bin/Debug/net5.0),先切换到项目根目录(即包含BaGet.Web文件夹的目录),再运行命令:cd /path/to/your/project/root dotnet ./BaGet/bin/Release/net5.0/BaGet.dll显式指定内容根目录
通过--content-root参数强制指定应用的内容根目录为项目根目录,让路径计算逻辑和dotnet run保持一致:dotnet BaGet.dll --content-root /path/to/your/project/root替换
/path/to/your/project/root为实际包含BaGet.Web文件夹的目录路径。修改路径计算逻辑(可选)
若不想依赖工作目录,可以改为基于程序集所在目录计算静态文件路径,避免相对路径受工作目录影响:var assemblyDir = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); var webPath = Path.Combine(assemblyDir, "..", "..", "..", "BaGet.Web"); var provider = new PhysicalFileProvider(Path.GetFullPath(webPath));
内容的提问来源于stack exchange,提问作者Anibal Yeh
相关产品推荐
相关产品推荐

