저는 Entity Framework Core가있는 ASP.NET Core 1.0 웹 응용 프로그램을 실행하고 있습니다. 앱이 잠시 (24 ~ 48 시간) 실행되면 앱이 임의의 엔드 포인트 또는 정적 리소스에 대한 모든 요청에 대해 충돌을 시작하여 System.InvalidOperationException: ExecuteReader requires an open and available Connection. The connection's current state is closed.
오류가 발생합니다. 앱 풀을 다시 시작하여 복구 할 수 있습니다.EF 코어 - System.InvalidOperationException : ExecuteReader 열려 있고 사용 가능한 연결이 필요합니다. 연결의 현재 상태가 닫힙니다.
나는이 같은 엔티티 프레임 워크를 구성하고있다 :
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
이 같은이 같은 확장 방법으로 owin 파이프 라인에서 데이터를로드 오전 :
Startup.cs
app.LoadTenantData();
AppBuilderExtensions.cs :앱에서 오랜 시간 동안 실행 된 경우에만 오류가 발생하기 때문에 0
public static void LoadTenantData(this IApplicationBuilder app)
{
app.Use(async (context, next) =>
{
var dbContext = app.ApplicationServices.GetService<ApplicationDbContext>();
var club = dbContext.Clubs.Single(c => c.Id == GetClubIdFromUrl(context));
context.Items[PipelineConstants.ClubKey] = club;
await next();
});
}
, 그것을 재현하기 어렵다,하지만 난 그것을 잘못 EF 개폐 연결을 할 수있는 뭔가가 있으리라 믿고있어.
어떻게 디버깅 할 수 있습니까? EF를 잘못 사용하고 있습니까?
여기에서 어떻게 문제를 해결할 수 있습니까? 나는 똑같은 문제를 겪고있다. 나는 비동기를 사용하고 있으며 모든 db 쿼리를 가지고있는 모든 곳을 기다리고 있습니다. 그리고 이것은 부하 테스트를 할 때 약 30 %의 경우에 계속됩니다. –
문제를 해결할 수 없었습니다. 액션 필터를 사용하여 MVC 파이프 라인 내부의 모든 테넌트 데이터를로드하는 작업이 끝났습니다. https://github.com/severisv/MyTeam/blob/master/src/MyTeam/Filters /LoadTenantDataAttribute.cs 필터가 올바른 순서로 추가 된 경우에만 작동합니다. – severin