ASP.Net MVC Core: процесс сборки перед рендерингом не завершился в течение периода времени 50 секунд - PullRequest
0 голосов
/ 03 июля 2018

У меня ASP.Net MVC Core (2.1.0) с предварительным рендерингом SPA.

Я получаю тайм-аут изнутри моего промежуточного программного обеспечения токена JWT в строке "await next ()".

Я начал получать ошибку, когда обновил свой @ angular / cli до последней версии (v6.0.8), в которую также добавлен @ angular-devkit / build-angular (v0.6.8).

Я не получаю никаких ошибок при запуске "ng build".

public static class JwtTokenMiddleware
{
    public static IApplicationBuilder UseJwtTokenMiddleware(this IApplicationBuilder app, string schema = JwtBearerDefaults.AuthenticationScheme)
    {
        return app.Use(async (ctx, next) =>
        {
            if (ctx.User.Identity?.IsAuthenticated != true)
            {
                var result = await ctx.AuthenticateAsync(schema);
                if (result.Succeeded && result.Principal != null)
                {
                    ctx.User = result.Principal;
                }
            }

            await next();
        });
    }
}

Stacktrace:

System.TimeoutException: процесс сборки перед рендерингом не завершено в течение времени ожидания 50 секунд. Проверить вывод журнала для информации об ошибках. в Microsoft.AspNetCore.SpaServices.Extensions.Util.TaskTimeoutExtensions.WithTimeout (Task задача, TimeSpan timeoutDelay, String message) в Microsoft.AspNetCore.Builder.SpaPrerenderingExtensions. <> C__DisplayClass0_0. d.MoveNext () --- Конец стека трассировки из предыдущего места, где было сгенерировано исключение --- в Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke (HttpContext httpContext) в Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke (HttpContext контекст) в MyProject.JwtTokenMiddleware. <> C__DisplayClass0_0. d.MoveNext () в /MyProject/UseJwtTokenMiddleware.cs:line 23 --- Конец стека трассировки из предыдущего места, где было сгенерировано исключение --- в Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke (HttpContext контекст) в Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke (HttpContext контекст) в Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke (HttpContext контекст)

UPDATE:

Обновление angular-cli заменяет некоторые настройки. Исходный файл .angular-cli.json имел настройки для папки рендеринга на стороне сервера. Это исчезло с новым файлом angular.json, который переписал обновление. Вот почему ASP.Net не смог его найти. Теперь мне нужно вернуть настройки SSR в файл angular.json.

ОБНОВЛЕНИЕ 2:

В документах по https://angular.io/guide/universal#angular-cli-configuration указано, что нужно добавить в angular.json.

1 Ответ

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

В файле startup.cs перейдите к части кода IsDevelopment и добавьте следующие строки:

if (env.IsDevelopment())
{
    //Time limit extended
    spa.Options.StartupTimeout = new TimeSpan(days: 0, hours: 0, minutes: 1, seconds: 30);
    //Time limit extended
    spa.UseAngularCliServer(npmScript: "start");
}

Ссылка: https://github.com/aspnet/JavaScriptServices/issues/1512

...