Процесс сборки зависает при доступе к context.Request.Path в промежуточном программном обеспечении во время компиляции приложения .NET 8

1
7

Я столкнулся со странной проблемой при сборке моего приложения ASP.NET Core. Процесс сборки зависает на неопределенный срок всякий раз, когда я включаю code, который обращается к свойству context.Request.Path в промежуточном программном обеспечении. Однако приложение работает нормально при отладке.

У меня есть промежуточное программное обеспечение, которое изменяет путь запроса при возврате codeа статуса 404, поэтому оно отображает пользовательскую страницу 404 без изменения URL. Вот code промежуточного программного обеспечения:

Когда я собираю проект, процесс сборки зависает при вызове компилятора csc.exe. Visual Studio остается отзывчивым, но вывод сборки остается на той же команде на неопределенный срок. Я даже оставил его работать на ночь без какого-либо прогресса. Та же проблема возникает при запуске msbuild напрямую из командной строки.

Что интересно, приложение запускается нормально, когда я использую "Начать отладку". Проблема, похоже, характерна для процесса сборки.

Зависание происходит всякий раз, когда я обращаюсь к context.Request.Path. Простого чтения свойства без его изменения достаточно, чтобы вызвать проблему:

Промежуточное программное обеспечение регистрируется только тогда, когда среда не является средой разработки, но сборка выполняется в среде разработки.

app.Use(async (context, next) =>
{
    await next();
    if (context.Response.StatusCode == 404)
    {
        LogUtils.GetGlobalErrorLogger().Warn("Page not found: {PageUrl}", context.Request.GetDisplayUrl());
        context.Request.Path = "/404";  // This line causes the issue
        await next();
    }
});
var path = context.Request.Path;  // Causes the hang
Марфа
Вопрос задан8 января 2024 г.

1 Ответ

2
Софрон
Ответ получен18 сентября 2024 г.

Ваш ответ

Загрузить файл.