Blazor маршрутизация - переход на статическую страницу - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь создать приложение Blazor для использования на веб-сайте. Большая часть веб-сайта будет статичной, и я хотел бы, чтобы эта часть обслуживалась из статических HTML-файлов по соображениям производительности на стороне клиента. Несколько страниц сайта будут отображаться с помощью приложения Blazor. При создании прототипа я столкнулся с проблемой: при переходе от части Blazor обратно к статической части веб-сайта я получаю «Ошибка: System.InvalidOperationException:« Маршрутизатор »не может найти ни одного компонента с маршрутом для« / index. HTML».»

Ссылка на index.html находится в теге body страницы, на которой находится приложение, но за пределами тега приложения, и она должна быть вне внимания Blazor. Я понимаю, что причина проблемы в том, что маршрутизатор не может найти компонент для маршрута, но почему Blazor пытается найти компонент, а не просто позволяет браузеру перейти на страницу, не относящуюся к Blazor? Эту ссылку должен обрабатывать браузер, а не Blazor, я бы подумал?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Такое поведение связано с тем, что Маршрутизатор, используя UriHelper, ищет компоненты в базе документов uri (<base href="/" />). Временное решение может быть возможным путем предоставления абсолютного URI для ваших ссылок, которые не являются компонентами, например: <a href="https://www.asp.net/">Asp Net<a>

Попробуй это; Примечание. Код должен быть размещен в методе Configure вашего серверного приложения

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
--- ---- ---
            // Mount the server-side Blazor app on /subdir
            app.Map("/subdir", subdirApp =>
            {

                subdirApp.UseBlazor<YourBlazorApp.Startup>();
            });
        } 

Источник: https://github.com/aspnet/AspNetCore/blob/master/src/Components/test/testapps/TestServer/Startup.cs

0 голосов
/ 10 января 2019

В startup.cs вашего сайта измените оператор app.UseBlazor() на:

app.Map("/bzr", child => { child.UseBlazor<Blazor.Program>(); });

И в index.html в wwwroot измените основную ссылку на:

<base href="/bzr/" />

Теперь все, что находится вне папки /bzr, будет работать как обычный веб-сайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...