1

我有带有 SPA Prerendering 的 ASP.Net MVC Core (2.1.0)。

我在“等待下一个()”行中的 JWT 令牌中间件中出现超时。

当我将 @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();
        });
    }
}

堆栈跟踪:

System.TimeoutException:预渲染构建过程未在 50 秒的超时时间内完成。检查日志输出以获取错误信息。在 Microsoft.AspNetCore.SpaServices.Extensions.Util.TaskTimeoutExtensions.WithTimeout(任务任务,TimeSpan timeoutDelay,字符串消息)在 Microsoft.AspNetCore.Builder.SpaPrerenderingExtensions.<>c__DisplayClass0_0.<b__1>d.MoveNext() --- 结束来自先前引发异常的位置的堆栈跟踪 --- 在 Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) 在 Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext) 在 MyProject.JwtTokenMiddleware.<>c__DisplayClass0_0.< /MyProject/UseJwtTokenMiddleware.cs 中的 b__0>d.MoveNext():

更新:

angular-cli 升级替换了一些设置。原始 .angular-cli.json 文件具有服务器端渲染文件夹的设置。升级重写的新 angular.json 文件已经消失了。这就是 ASP.Net 找不到它的原因。我现在必须将 SSR 设置放回 angular.json 文件中。

更新 2:

https://angular.io/guide/universal#angular-cli-configuration上的文档概述了在 angular.json 中放入的内容。

4

2 回答 2

2

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

于 2019-04-10T13:12:06.750 回答
0

如果您添加了 SSL 标志,请确保 angular.json 中的 SSL 标志不正确。

于 2021-04-20T07:05:25.843 回答