많은 시간을 들이고 생각을 할 때 생각하는 응용 프로그램에서 많은 단어가 필요한 웹 응용 프로그램을 만들었습니다.Asp.net 세션이 시간 초과되어 모든 데이터가 저장되지 않았습니까?
30 분 후에 세션 시간이 초과되었다고 가정 해 봅시다. 많은 단어를 쓰면서 생각하고 세션 시간 제한을 작성하고 로그인 페이지로 리디렉션하면서 모든 기록 된 데이터가 손실됩니다.
세션 시간 초과 기간 연장을 제외하고이 문제에 대한 아이디어가 있습니까 ???
많은 시간을 들이고 생각을 할 때 생각하는 응용 프로그램에서 많은 단어가 필요한 웹 응용 프로그램을 만들었습니다.Asp.net 세션이 시간 초과되어 모든 데이터가 저장되지 않았습니까?
30 분 후에 세션 시간이 초과되었다고 가정 해 봅시다. 많은 단어를 쓰면서 생각하고 세션 시간 제한을 작성하고 로그인 페이지로 리디렉션하면서 모든 기록 된 데이터가 손실됩니다.
세션 시간 초과 기간 연장을 제외하고이 문제에 대한 아이디어가 있습니까 ???
현재 세션은 생성되고 In-Process
모드로 관리되며이 모드에서는 세션이 타임 아웃 단계에 도달하면 세션 상태를 복구 할 수 없습니다. SQL Server Mode
및 configure your application을 SQL Server Mode
으로 설정하면 데이터가 SQL Server 데이터베이스에 유지됩니다.
Profile Properties은 (는) 상태를 저장하기위한 대체 프로그램입니다.
정기적으로 "집으로 전화를 걸기"(서버에서 더미 코드를 실행)하는 일부 아약스 기능을 사용할 수 있습니다. 사용자가이 페이지를 열어두면 세션이 활성 상태로 유지됩니다.
당신은 명시 적으로 콜백 세션을 사용해야 할 수도 있습니다, 같은
Session["LastAccess"] = DateTime.Now;
로 단지 생존을 유지합니다.
15 분마다이 호출을 실행하면 세션이 시간 초과되지 않고 서버의로드가 최소화됩니다.
코드의 일부를 별도의 스레드에서 실행할 수있는 비동기 프로그래밍 모델을 사용하십시오. 모델
을 완료는 APM과 프로그래밍의 세 가지 스타일이있다
때까지 기다리
폴링 모델
콜백 모델 귀하의 요구 사항과 결과를 바탕으로
당신은 더 많은 애플 리케이션 모델을 선택할 수 있습니다 ropriate.
예를 들어, 우리가 당신을 완료하고 샘플 코드
byte[] buffer = new byte[100];
string filename =
string.Concat(Environment.SystemDirectory, "\\mfc71.pdb");
FileStream strm = new FileStream(filename,
FileMode.Open, FileAccess.Read, FileShare.Read, 1024,
FileOptions.Asynchronous);
// Make the asynchronous call
strm.Read(buffer, 0, buffer.Length);
IAsyncResult result = strm.BeginRead(buffer, 0, buffer.Length, null, null);
// Do some work here while you wait
// Calling EndRead will block until the Async work is complete
int numBytes = strm.EndRead(result);
// Don't forget to close the stream
strm.Close();
Console.WriteLine("Read {0} Bytes", numBytes);
Console.WriteLine(BitConverter.ToString(buffer));
하지만 당신의 스레드를 생성이 필요하거나 제안하지 않습니다 때까지 파일을 읽고 기다릴 수있는 가정 해 봅시다, .NET은 스레드 풀에 내장 지원하는 자신 만의 스레드를 만들려는 많은 상황에서 사용할 수 있습니다. 대신 새 스레드를 생성하고이를 제어하는 샘플 코드
static void WorkWithParameter(object o)
{
string info = (string) o;
for (int x = 0; x < 10; ++x)
{
Console.WriteLine("{0}: {1}", info,
Thread.CurrentThread.ManagedThreadId);
// Slow down thread and let other threads work
Thread.Sleep(10);
}
}
, 우리는 당신의 Web.config에서 세션의 제한 시간을 변경할 수는 QueueWorkItem 방법
WaitCallback workItem = new WaitCallback(WorkWithParameter));
if (!ThreadPool.QueueUserWorkItem(workItem, "ThreadPooled"))
{
Console.WriteLine("Could not queue item");
}
를 사용하여이 작업에 ThreadPool이를 사용 . 또 다른 옵션은 데이터를 사용자 쿠키에 저장하는 것입니다. 세션이 만료 될 때 데이터가 손실되지 않기 때문입니다. – Mharlin