2012-09-06 2 views
1

새 웹 사이트에서는 거대한 형식 (실제로 큰 의미이며 완료하려면 적어도 15-20 분이 필요합니다), 하나의 클라이언트에 대해 전체 웹 사이트를 구성하는 내년을 위해.정말 큰 양식을 작성하면 Asp.Net MVC 이상한 오류가 발생했습니다.

여러 탭 사이에 분포되어 있습니다 (마법사입니다). 다음 탭으로 갈 때마다 다음 "페이지"를 생성하는 서버에 대한 일반 (아약스가 아닌) 호출을합니다. 이전 정보는 세션 (사용자 정의 바인더가있는 객체)에 저장됩니다.

오늘 모든 실제 데이터를 테스트 할 때까지 모든 것이 잘 작동하고있었습니다. 실제 데이터는 감상을 필요로하며 정확한 요소를 찾기 위해 노력합니다 ... 그리고 그것은 시간이 걸립니다.

우리가 가진 문제는보기가 모델을 부분적으로 비어있는 상태로 수신한다는 것입니다. 세션 기간은 1440 분 (IIS에서도)으로 설정됩니다. 지금 당장은 내가 본 것은 내 모델에 처음 접근 할 때 NullException을 얻는다는 것이다.

1 시간 정도부터 컨트롤러를 확인하고 있지만 null 모델을 제공한다는 것은 불가능합니다. 모든 데이터를 매우 빠르게 저장하면 아무런 문제가 없습니다 (그러나 임의의 데이터 임).

지금은 IIS 서버에서이 문제를 재현 할 수 있었지만 디버깅하려면 elmah 로그를 검사하고 있으므로 재현하기가 쉽지 않습니다.

어떻게 디버깅해야합니까? 나는 여기서 조금 잃어버린다.

+0

솔직히 탭 뷰를 처리 할 때 데이터를 데이터베이스 테이블에 저장합니다. 하나의 탭을 채우고 다시 돌아 오지 않는 것처럼 부분 항목을 분리하여 각 탭 데이터를 XML로 저장하고 정적으로 유형이 지정된 객체로 다시 직렬화하는 코드를 작성할 수 있도록 결정할 수 있습니다. 사용자가 모든 탭을 완료하면 데이터를 가져 와서 데이터베이스 전체의 적절한 위치에 저장 한 다음 임시 파일을 삭제할 수 있습니다. XML. –

답변

0

문제는 세션에 충분한 공간이없는 것입니다. 응용 프로그램 풀을 다시 시작하여 임시 문제를 해결했습니다. 이 코드를 모두 변경하지 않아도되는 솔루션을 계속 검색합니다. 다른 모드의 세션 상태 일 수도 있지만 모델을 직렬화 할 수 있어야합니다.

0

나는 세션이 안정적인 지속성을 제공하지 않는다고 가정해야한다고 생각한다. 세부 사항에 대해서는 확신 할 수 없지만 메모리 제한을 초과하면 일부 요소가 해제되기 시작합니다.

데이터베이스를 사용하여 정보를 저장하거나 지속성있는 상태에 대한 구현을 도입 할 수 있다면 더 안전합니다. @Ufuk
에서 제공 ANS 이외에

+0

그래서 IIS는 사용 가능한 공간에 따라 세션 정보를 무료로 사용할 수 있습니까? 좋아, 나는 그게 가능하지 않았어. 세션에 할당 된 공간을 일시적으로 늘릴 수있는 방법이 있습니까? – J4N

+0

나는 거기에있는 것 같지만 시나리오에서는 ASP.NET 세션보다 안전한 방법을 선택해야한다고 생각합니다. 결국 오랜 기간 동안 중요한 데이터를 저장하도록 설계되지 않았습니다. –

+0

20 분은 그리 길지 않습니다. 이제는 이것을 바꿀 수 없습니다. 출시가 완료되면이를 수행하는 방법에 대해 조사 할 예정이며 (앞으로 1 년이 소요될 예정 임), 지금 당장은 작동하도록 몇 시간 만 있습니다. 그럼 이걸하는 법을 아십니까? – J4N

0

당신은 쉽게 ajax 요청을 실제로 늘 만료 얻을 사이트가 오랜 기간에 계속 실행됩니다 이것을 session을 수행하여 제외한 아무것도하지 않는 것마다 1 분 보낼 수 있습니다

+0

IIS와 web.config 모두에서 1440 분 (1 일)의 시간 제한을 설정했기 때문에 시간 초과와 관련이 없다고 생각합니다. – J4N

관련 문제