首页 新闻 赞助 找找看

asp.net core 2.1部署到Linux无法访问wwwroot文件夹中的资源

1
悬赏园豆:5 [已解决问题] 解决于 2018-09-04 17:37

网站能正常访问,css、js报404。
Startup配置如下:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}

        //
        app.UseIdentityServer();
        //添加静态资源访问
        app.UseStaticFiles();
        //添加mvc默认路由
        app.UseMvcWithDefaultRoute();
    }
ice.ko的主页 ice.ko | 初学一级 | 园豆:90
提问于:2018-09-04 16:28
< >
分享
最佳答案
0

会不会是大小写的问题?linux是区分大小写的

收获园豆:5
dudu | 高人七级 |园豆:31075 | 2018-09-04 16:33

添加UseStaticFiles 中间件后默认的文件名称没做修改。浏览器访问路径:http://www.11sx.pw:81/lib/bootstrap/css/bootstrap.css
看的话都是正常的 没大小写问题。

ice.ko | 园豆:90 (初学一级) | 2018-09-04 16:36

@Space.MK: 建议将 app.UseStaticFiles(); 放到 app.UseIdentityServer(); 之前

dudu | 园豆:31075 (高人七级) | 2018-09-04 16:53

@dudu: 测试还是404,

ice.ko | 园豆:90 (初学一级) | 2018-09-04 16:59

@dudu: 之前有编译 https://github.com/zkweb-framework/zkweb.system.drawing
不知道是否影响到环境

ice.ko | 园豆:90 (初学一级) | 2018-09-04 17:02

@Space.MK: 在 linux 服务器上的发布文件夹中运行 tree 命令看文件夹是否正常

dudu | 园豆:31075 (高人七级) | 2018-09-04 17:13

@dudu:

ice.ko | 园豆:90 (初学一级) | 2018-09-04 17:16

@Space.MK: 在你本机可以正常访问?

dudu | 园豆:31075 (高人七级) | 2018-09-04 17:22

@dudu: 本地使用dotnet 命令 运行能正常访问

ice.ko | 园豆:90 (初学一级) | 2018-09-04 17:23

@Space.MK: 你是怎么发布到 linux 服务器上的?

dudu | 园豆:31075 (高人七级) | 2018-09-04 17:26

@dudu: 使用xshell5 中的 xftp5 上传过去的

ice.ko | 园豆:90 (初学一级) | 2018-09-04 17:28

@dudu: 找到问题了,是因为我启动的时候没在项目文件夹中启动,我之前是在Linux主目录启动的项目。@dudu 感谢您的耐心回答

ice.ko | 园豆:90 (初学一级) | 2018-09-04 17:36

@Space.MK: 要先在本机运行 dotnet publish -c Release -r linux-x64进行发布,将发布文件夹中的文件上传到服务器

dudu | 园豆:31075 (高人七级) | 2018-09-04 17:38

@MPotato: 谢谢

进击的小黑 | 园豆:200 (初学一级) | 2019-05-29 11:11
其他回答(2)
0

首先 publish,dotnet xxx.dll 要在 dll所在目录 着实不方便

我已经改成 配置的了

https://github.com/Microshaoft/MsSqlCodeDiffVersioning/blob/master/MsSqlCodeDiffVersioning/Startup.cs
https://github.com/Microshaoft/MsSqlCodeDiffVersioning/blob/master/MsSqlCodeDiffVersioning/wwwrootpaths.json

app.UseDefaultFiles
(
new DefaultFilesOptions()
{
DefaultFileNames =
{
"index.html"
}
}
);
//兼容 Linux/Windows wwwroot 路径配置
var wwwroot = GetExistsPaths
(
"wwwrootpaths.json"
, "wwwroot"
)
.FirstOrDefault();
if (wwwroot.IsNullOrEmptyOrWhiteSpace())
{
app.UseStaticFiles();
}
else
{
app
.UseStaticFiles
(
new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider
(
wwwroot
)
, RequestPath = ""
}
);
}

于斯人也 | 园豆:222 (菜鸟二级) | 2018-09-05 14:53
0
#if DEBUG
            app.UseStaticFiles();
#else
            app.UseStaticFiles(new StaticFileOptions()
            {
                FileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider($"{System.AppDomain.CurrentDomain.BaseDirectory}/wwwroot"),
                RequestPath = string.Empty,
                ServeUnknownFileTypes = true,
            });
#endif
碌云 | 园豆:212 (菜鸟二级) | 2021-06-28 13:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册