NET Core Linux PathBase Stati c Файлы - PullRequest
0 голосов
/ 27 апреля 2020

У меня проблема с размещением веб-приложения. NET Core на Linux, с обратным прокси-сервером (Apache или Nginx), с несколькими местоположениями для различных портов Kestrel.

Когда Я пытаюсь использовать файлы stati c, размещенные в wwwroot/..., используя @ Url.Content ("~") в макете или скрипты загрузки / css в представлениях, а Request.PathBase возвращает "пусто", поэтому приложение не загружает js или css правильно.

Вместо загрузки статики на mydomain2.com/test2/js / ... ищите их в mydomain2.com/js / ... (тогда не найдено stati c файлов)

Я пытался отследить запрос следующим образом:

Контроллер - >>

ViewData["Scheme"] = $"{this.Request.Scheme}";
ViewData["Host"] = $"{this.Request.Host}";
ViewData["PathBase"] = $"{this.Request.PathBase}";
ViewData["Url"] = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}";
ViewData["CurrentPath"] = $"{Directory.GetCurrentDirectory()}";

ViewData["Location"] = $"{System.Reflection.Assembly.GetExecutingAssembly().Location}";
ViewData["Path"] = $"{this.Request.Path}";

Просмотр - >>

<label>Scheme: @ViewData["Scheme"]</label>
<br />
<label>Host: @ViewData["Host"]</label>
<br />
<label>PathBase: @ViewData["PathBase"]</label>
<br />
<label>Url: @ViewData["Url"]</label>
<br />
<label>CurrentPath: @ViewData["CurrentPath"]</label>
<br />
<label>Location: @ViewData["Location"]</label>
<br />
<label>Path: @ViewData["Path"]</label>

Получение этого результата в IIS:

App in IIS

И этот включен Linux:

App in Linux (Apache or nginx)

Находится в похожем URL:

IIS: mydomain1.com/test/

Linux: mydomain2.com/test2/

Я пытался передать ForwardedHeadersOptions, чтобы url.content понимал место, где он развернут:

// Forwarded Headers Middleware 
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

, а также переписать PathBase:

app.UsePathBase("/test2");

Но Мне не удалось загрузить stati c с mydomain2.com/test2/js / ..., но он продолжает пытаться загрузить с mydomain2.com/js / ..., что, конечно, не там.

В чем моя ошибка? Есть идеи как это исправить? Спасибо.

Среди других сайтов, которые я читал эти сообщения:

ASP. Net core 3.0 (3.1) set PathBase ...

. NET Приложение Core Nancy, обслуживающее данные c файлов

Перенаправление при использовании PathBase

Как изменить root путь ~ / в Razor в asp. net core ...

...