StructureMap InstanceScope.하이브리드 및 IDisposable
-
20-08-2019 - |
문제
나는 asp.net-mvc 응용 프로그램입니다.Linq 데이터의 컨텍스트 전달되는 서비스로 개체구조에 의해 지도입니다.나는 설정의 범위는 하이브리드입니다.이 모두는 잘 작동합니다.
protected override void configure()
{
ForRequestedType<AetherDataContext>()
.TheDefaultIs(() => new AetherDataContext())
.CacheBy(InstanceScope.Hybrid);
}
문제는 내가 계속 실행 저희의 메모리지 IDisposable 인터페이스는 지금까지 실제로 호출합니다.
누구나 아이디어를 얻었다?
실패는 사람이 어떤 다른 아이디어에 대한 일들이는 원인이 될 수도 있습니다 내가 메모리 예외?
업데이트:
그래서 몇 가지 추가 정보를,그냥 박제의 몇 가지 방법으로 데이터의 컨텍스트를 넣 브레이크를 포인트에 있다.
protected override void Dispose(bool disposing)
{
Debug.WriteLine("Disposing: " + DateTime.Now);
base.Dispose(disposing);
}
public new void Dispose()
{
Debug.WriteLine("Disposing: " + DateTime.Now);
base.Dispose();
}
나는 나는 이렇게 올바른 방법으로,추측되는 새로운 방법이 될 것이라고?
어쨌든,의 어느 브레이크를 포인트에 도달 했습니다.그러나 생성자를 위해 같은 클래스라는 모든 요청에 대 하지만입니다.지 않는 이상적인 나는 생각입니다.
해결책
이것은 내가 2 일 전에 묻는 질문의 거의 정확한 사본입니다. Idisposable을 구현하는 항목이 포함 된 세션
instancescope.hybrid는 httpcontext.current.items가 존재하는 경우 또는 instancescope.httpsession이 httpsession 및 threadlocal을 사용하는 것과 동일한 방식으로 작동하는 경우 객체를 저장합니다. 요청 당 항목 수집이 생겨나 기 때문에 내 질문에 대한 패턴을 구현하면 현재 요청이 끝날 때 해고를 처리해야합니다.
다른 팁
좋아, 그래서 최신 버전의 structuremap (2.3.5) 유용한 작은 방법이 있습니다
HttpContextBuildPolicy.DisposeAndClearAll();
HTTPContext 및 ThreadLocal의 정리 편의 메소드. httpcontextBuildPolicy.disposeAndClearAll (), threadLocalStoragePolicy.DisposeAndClearAll (). 두 메소드를 호출하면 모든 캐시 인스턴스를 꺼내고 객체가 idisposable 인 경우 idispose를 호출합니다.
이전에는 처분 방법이 호출되지 않았기 때문에 Application_endRequest에 추가했으며 지금은 이에 추가했습니다. 나는 이것이 내 기억 문제 중 일부를 해결하기를 바라고있다.
우리는 보게 될 것이다.
그래서 해결책;그 Cassini 를 일으키는 문제입니다.기본적으로 만들어 새로운 컨텍스트에 대한 모든 요청을 합니다.는 이유는 내가 보고 컨텍스트를 만들 수 있으로 하지 않았던 전화 나는 처분할 수 있는 제대로 나는 아무 생각이 없습니다.그러나 다시 내가 준비하는 믿는 것 이것은 뭔가가 카시.