我有一个小项目,它使用Asp.Net核心身份框架和EF Core.一个函数调用UserManager.FindByIdAsync(id)并返回正确的对象.但是,它仅在应用程序启动后的几分钟内工作.只要服务器忙,它就可以正常工作,但只要应用程序空闲超过1-2分钟,请求就会失败.
它失败了:
*OperationCanceledException: The operation was canceled.
System.Threading.CancellationToken.ThrowOperationCanceledException()*
Run Code Online (Sandbox Code Playgroud)
stacktrace看起来像这样:
*System.Threading.CancellationToken.ThrowOperationCanceledException()
Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore.FindByIdAsync(string userId, CancellationToken cancellationToken)
Microsoft.AspNetCore.Identity.UserManager.FindByIdAsync(string userId)
MyProject.Areas.Admin.ControllerServices.UserService+<GetUser>d__11.MoveNext() in UserService.cs*
Run Code Online (Sandbox Code Playgroud)
我还在登录,因为其他页面工作正常.对EF的简单调用context.Users.FindAsync(new object[] { id })将按预期工作,但下一行包含FindByIdAsync将失败.
所有这些在开发环境中都很完美,当在WS 2008 R2上运行IIS的服务器上安装应用程序时会发生错误.回收应用程序池将使其再次工作,直到它再次闲置几分钟.
我注意到当'Connection id'0HL5E91K33IIQ"重置"时.正在记录,然后应用程序开始失败.在此之前,它的工作原理.
FindByIdAsync不是唯一失败的标识函数,许多其他函数失败并出现相同的错误.
我错过了什么?