我有带有 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 中放入的内容。