Статические файлы не могут быть найдены после публикации в Linux на ARM - PullRequest
0 голосов
/ 29 августа 2018

Я получил проект Web-API, основанный на ASP.NET Core 2.1. Этот Web-API должен доставлять статические файлы из папки wwwroot по умолчанию. Это прекрасно работает с кодом ниже (из Startup.cs) на моем компьютере с Windows.

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseMvc()
        .UseStaticFiles();
    }
}

Но когда я публикую проект для Linux на ARM (dotnet publish -r linux-arm) и отправляю его в тестовую систему, статические файлы не могут быть извлечены браузером. Сервер всегда возвращает HTTP 404, независимо от того, как называются файлы, и, конечно, я уважаю прописные и строчные буквы в системах Unix, поэтому он не должен быть преобразован в Статические файлы основного веб-приложения Asp.Net дают 404 в Linux .

Содержимое wwwroot dir доступно для чтения процессом сервера. Я проверил это с помощью File.ReadAllText(<full path to file in wwwroot>).

Сервер работает только на локальном хосте, и поэтому в проекте не используются другие серверы, такие как ngingx.

1 Ответ

0 голосов
/ 30 августа 2018

Мне кажется, я узнал, что я сделал не так. Я запустил Web-API, используя полный путь. Вместо этого мне сначала пришлось переключиться в каталог приложения.

Рабочая:

cd /home/myuser/testapp
./testapp

Не Работает:

/home/myuser/testapp/testapp

Я больше ничего не менял и могу воспроизвести это, поэтому сначала переключение на каталог приложения кажется обязательным.

...