2013-05-02 6 views
0

내부 작업 처리를위한 IIS 웹 사이트가 있습니다. 작업은 약 10 분이 걸릴 것입니다. 사용자가 버튼을 클릭하여 작업을 시작하면 약 1 분 후에 전체 페이지가 흰색으로 변하고 "Connection Timeout"이 표시됩니다. 그러나이 작업은 3rd pty API를 호출하는 것과 관련이 있으며, 여전히 지하에 있습니다.연결 시간이 초과되었지만 작업이 계속 실행 중입니다.

작업이 아직 실행 중이면 사용자가 웹 사이트에 다시 로그인 할 수 없습니다. 작업이 끝나면 사용자는 웹 사이트를 다시 사용할 수 있습니다.

여기에 비밀이 있습니까?

답변

0

여기에 여러 가지 것들이 있습니다.

  1. 시간의 웹 브라우저는 웹 서버가 SQL 명령이 밖으로 클라이언트 시간 전에 실행됩니다 요청
  2. 시간을 처리 할 응답을
  3. 시간을 기다립니다.
  4. 시간 SQL Server는 명령을 종료하기 전에 명령을 실행합니다. connection timeout in IE 참조가 : 파이어 폭스에서 당신에 대한 확인 할 수 있어야한다 : 설정

    웹 서버와 ASP를 들어

는 일반적으로 웹 브라우저 하나 (정확한 숫자의 확실하지 않은) 2 분 참조입니다. net 참조 HttpRuntimeSection.ExecutionTimeout Property

명령 시간 초과 참조 Sqlcommand.CommandTimeout 참조 기본값은 30 초입니다.

말하자면 ... 클라이언트가 대기를 멈추었 기 때문에 SQL Server가 명령 실행을 강제하지 않습니다. 연결에서 close를 호출하면 서버에서 실행중인 명령이 중지되지만 변경 사항이 롤백 될 때까지 기다려야 할 수도 있습니다.

SQL Server 에이전트 작업을 사용하고 있지 않다고 생각하지만 연결을 끊어도 작업이 중단되지는 않습니다. 이 경우 당신은 당신이 무엇을 할 수 있는지 다음 출력을 보낼 수 있도록

단지 클라이언트가

Response.Write("<!-- progress ... -->"); 
    Response.Flush(); 

처럼 ... 클라이언트에 약간의 출력을 보낼 수있다 기다리지 않고하기 때문에 그 플러시해야 서버 측에서 응답을 버퍼링하지 않습니다.

+0

고마워요. 실제 상황을 구체적으로 설명해 드리겠습니다. 서버 측 C# 코드에서 예를 들어 400 개의 객체를 원격 API 호출로 보내는 순환이있었습니다. 페이지에 연결 시간 초과가 표시되지만 서버 코드가 계속 실행 중입니다. SQL 문제를 제외 시키자. –

관련 문제