Сторона сервера Blazor позаду зворотного проксі-сервера 404


10

У мене за допомогою зворотного проксі (за допомогою ARR) розміщено додаток на базі сервера Blazor.

Я спробував усе, що можу придумати, але продовжую отримувати 404

_framework / blazor.server.js

Мій базовий href встановлений на "/ subite /":

<base href="https://stackoverflow.com/subsite/" />

і всі мої значення src такі відносні:

<script src="_framework/blazor.server.js"></script>
<script src="_content/BlazorInputFile/inputfile.js"></script>
<script src="animations.js"></script>

Кожна інша посилання на сценарій завантажується прекрасно, НАДЕБЕ дані _content, але не blazor.server.js.

Я також спробував старий фокус PathBase для додатків MVC, не маючи успіху:

if (!env.IsDevelopment()) {
    app.Use((context, next) => {
        context.Request.PathBase = new PathString("/subsite");
        return next();
    });
}

Хтось може сказати мені, як змусити Blazor усвідомити, куди поставити blazor.server.js у сценарії зворотного проксі?


1
blazor.server.js - це вбудований ресурс. ви можете спробувати отримати копію файлу та статично його обслуговувати, як і будь-який інший js-файл. Але навіть тоді між сервером та браузером існує багато балакання сигналів. Не знаєте, як це буде працювати у ваших налаштуваннях.
ravi

Хм. Я насправді цього не розумію, бо компоненти теж вбудовані ресурси, які живуть у _content, але це вважає їх просто чудовими. Я спробую схопити його та подати статично, але це здається фактичною помилкою - я маю на увазі, як ви можете забути підтримувати зворотні проксі-сайти в 2019 році
Дін

Чи є доступні журнали, щоб побачити, який (і якщо) шлях запиту закінчується ASP.NET?
Хенк Холтерман

Відповіді:



-1

Від док .

Перезапишіть URL-адреси для правильної маршрутизації

Маршрутизація запитів на компоненти сторінок у додатку Blazor WebAssembly не така проста, як запити маршрутизації в сервері Blazor Server, що розміщений. Розглянемо додаток Blazor WebAssembly з двома компонентами:

  • Main.razor - завантажується в корені програми та містить посилання на Aboutкомпонент ( href="About").
  • About.razor - Aboutкомпонент.

Коли запит документа за замовчуванням використовується за допомогою адресного рядка браузера (наприклад, https://www.contoso.com/):

  • Браузер робить запит.
  • Повертається сторінка за замовчуванням, яка зазвичай є index.html .
  • index.html завантажує додаток.
  • Маршрутизатор Blazor завантажується, а Mainкомпонент Razor надається.

На головній сторінці вибір посилання на компонент About працює на клієнті, оскільки маршрутизатор Blazor перешкоджає веб-переглядачу робити запит в Інтернеті www.contoso.comдля Aboutі сам обслуговує наданий Aboutкомпонент. Усі запити на внутрішні кінцеві точки в додатку Blazor WebAssembly працюють однаково: Запити не запускають запити на основі браузера на ресурси, розміщені на сервері в Інтернеті. Маршрутизатор обробляє запити внутрішньо.

Якщо запит зроблено за допомогою адресного рядка браузера для www.contoso.com/About, запит не працює. Такого ресурсу в Інтернет-хості програми не існує, тому відповідь 404 - Не знайдено .

Оскільки веб-переглядачі роблять запити на Інтернет-хости для сторінок клієнта, веб-сервери та послуги хостингу повинні переписати всі запити на ресурси, які фізично не перебувають на сервері, на сторінку index.html . Після повернення index.html маршрутизатор Blazor програми переймає та відповідає відповідним ресурсом.

Під час розгортання на сервері IIS ви можете використовувати модуль перезапису URL з опублікованим додатком файлом web.config . Для отримання додаткової інформації дивіться розділ IIS .


Можливо, ви можете спробувати включити проксі-сервер в IIS manager-> серверний вузол-> кеш-запит маршрутизації запиту додатка-> proxy-> enable.

Якщо у вас є лише один веб-сайт, ви можете просто додати веб-сайт до ферми серверів ARR, і тоді він створить правило маршрутизації автоматично. Буде зручно стежити за бек-сервером за допомогою перевірки стану здоров’я.

Це попередження про АРР викликає мою 404?


Ну, наскільки я бачу - ця стаття обертається навколо Blazor WebAssembly, і я використовую серверну сторону. Більше того, мій IIS вже використовує функцію прямого проксі-сервера ARR (оскільки саме так я роблю зворотний проксі в моїй установці).
Дінде
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.