Blazor Routing и Stati c Файл (PDF) Конфликт - PullRequest
0 голосов
/ 10 февраля 2020

Создание серверного приложения Blazor, которое представляет собой Wiki, в стиле Wiki. js (но с. net, конечно)

Поскольку пользователи создают страницы, это в основном это SPA с index.razor, соответствующим следующему:

@page "/"
@page "/{PageLink}"
@page "/{Folder}/{PageLink}"

К сожалению, поскольку я пытаюсь перенести существующую Wiki.js вики, я пытаюсь сохранить их файловую структуру, где uploads живет внутри основной папки репо. Таким образом, index.razor ловит. .../uploads/file.pdf и пытается отобразить его как вики-страницу (Папка = uploads, PageLink = file.pdf).

Мне удалось добавить это к Startup.cs, что помогает:

app.Map("/uploads", fileApp =>
        {
            fileApp.UseStaticFiles(new StaticFileOptions()
            {
                FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"WikiPages", @"uploads")),
                ServeUnknownFileTypes = true
            });
        });

Помещение перед app.UseEndpoints означает, что ввод или вставка пути http://localhost/uploads/file.pdf теперь работает и показывает мой pdf. Однако на вики-странице нажатие на ссылку <a href="uploads/file.pdf">File</a> не работает и все равно запускает маршрут index.razor. Shift-click, Ctrl-click, правой кнопкой мыши и «Открыть в новой вкладке» все работают , но щелчок по основному c не работает.

Я знаю, что в будущем, Blazor может иметь более продвинутую поддержку маршрутизации, что позволило бы мне «исключить» папку uploads из index.razor. В то же время, как мне исправить эти ссылки, чтобы показать мой PDF?

(полный код на Блики )

...