我有ASP.Net MVC Core(2.1.0)和SPA Prerendering。
我在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(任务 任务,TimeSpan timeoutDelay,字符串消息)在 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 上下文)
更新:
angular-cli升级替换了一些设置。原始.angular-cli.json文件具有服务器端渲染文件夹的设置。升级重写了新的angular.json文件,该文件消失了。这就是ASP.Net找不到它的原因。现在,我必须将SSR设置放回angular.json文件中。
更新2:
https://angular.io/guide/universal#angular-cli-configuration处的文档概述了放置在angular.json中的内容。
答案 0 :(得分:0)
在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");
}
答案 1 :(得分:0)
如果您添加了 SSL 标志,请确保 angular.json 中的 SSL 标志不为真。