Files
h-school/docs/bugs/04-wwwroot-not-found.md
T
Leonid PershinandCursor e35b8e438c Skip UseFileServer when wwwroot is missing.
Local Aspire has no published client folder; the middleware warned on every boot.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:22:28 +03:00

38 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Баг 4. UseFileServer без каталога wwwroot
## Симптом
При локальном старте сервера (Aspire, без publish):
```
warn: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[16]
The WebRootPath was not found: …\src\HSchool.Server\wwwroot. Static files may be unavailable.
```
Клиент в деве идёт с Vite на 5173, не с сервера. Ожидали отсутствие этого предупреждения.
## Причина
`Program` всегда зовёт `UseFileServer()`. ASP.NET подставляет `ContentRoot/wwwroot` даже если папки нет и пишет warning 16. Каталог появляется только в опубликованном контейнере (`PublishWithContainerFiles(client, "wwwroot")`).
## Путь
`UseFileServer` только если `wwwroot` есть на диске. Отвергнуто: пустой каталог с `.gitkeep`; флаг `IsDevelopment` (publish с Development тогда не раздаст клиент).
## Задачи
- [x] Не вызывать `UseFileServer`, пока `WebRootPath` не существует
- [x] Тест предиката на существующий и отсутствующий каталог
## Тест, без которого не закрыт
`HSchool.Server.Tests`: `ClientStaticFiles.CanServe` ложь на несуществующем пути, истина на живом каталоге.
```bash
dotnet test tests/HSchool.Server.Tests --filter FullyQualifiedName~ClientStaticFiles
```
## Стоп
Протокол, сейв, Vite, `PublishWithContainerFiles` не трогать.