[asp.net] 긴 ASP.NET 작업에 대한 IIS 요청 시간 초과

긴 작업을 실행할 때 IIS에서 요청 시간 초과가 발생합니다. 이면에서 내 ASP.NET 응용 프로그램이 데이터를 처리하고 있지만 처리중인 레코드 수가 많아 작업에 시간이 오래 걸립니다.

그러나 IIS가 세션 시간을 초과한다고 생각합니다. IIS 또는 ASP.NET 세션에 문제가 있습니까?

미리 감사드립니다



답변

ASP.NET 스크립트 실행에 허용되는 시간을 연장하려면 Server.ScriptTimeout값 을 늘리십시오 . 기본값은 .NET 1.x의 경우 90 초이고 .NET 2.0 이상의 경우 110 초입니다.

예를 들면 :

// Increase script timeout for current page to five minutes
Server.ScriptTimeout = 300;

이 값은 구성 요소 의 web.config파일에서도 구성 할 수 있습니다 httpRuntime.

<!-- Increase script timeout to five minutes -->
<httpRuntime executionTimeout="300"
  ... other configuration attributes ...
/>

여기에 이미지 설명 입력

MSDN 문서 에 따라 참고하십시오 .

“이 시간 제한은 컴파일 요소의 디버그 속성이 False 인 경우에만 적용됩니다. 따라서 디버그 속성이 True 인 경우 디버깅하는 동안 응용 프로그램 종료를 방지하기 위해이 속성을 큰 값으로 설정할 필요가 없습니다. “

이미이 작업을 수행했지만 세션이 만료되면 ASP.NET HttpSessionState.Timeout값 을 늘립니다 .

예를 들면 :

// Increase session timeout to thirty minutes
Session.Timeout = 30;

이 값은 구성 요소 의 web.config파일에서도 구성 할 수 있습니다 sessionState.

<configuration>
  <system.web>
    <sessionState
      mode="InProc"
      cookieless="true"
      timeout="30" />
  </system.web>
</configuration>

스크립트를 실행하는 데 몇 분이 걸리고 동시 사용자가 많은 경우 페이지를 비동기 페이지로 변경하는 것이 좋습니다. 이렇게하면 응용 프로그램의 확장 성이 향상됩니다.

다른 대안은 서버에 대한 관리자 액세스 권한이있는 경우이 장기 실행 작업을 예약 된 작업 또는 Windows 서비스로 구현하기위한 후보로 고려하는 것입니다.


답변

@Kev의 훌륭하고 철저한 답변!

WebForms 응용 프로그램의 한 관리 페이지에서만 오랫동안 처리했기 때문에 코드 옵션을 사용했습니다. 그러나 프로덕션에서 일시적인 빠른 수정을 허용하기 위해 <location>web.config 의 태그에서 구성 버전을 사용했습니다 . 이렇게하면 내 관리 / 처리 페이지에 충분한 시간이 생기고 최종 사용자를위한 페이지는 이전 시간 초과 동작을 유지했습니다.

아래에서 동일한 빠른 수정이 필요한 Google 직원을 위해 구성을 제공했습니다. 당신은 당연히 다른 내 ‘4시간’예보다 값 만 사용해야 DO의 세션이주의를 timeOut분에 요청하면서, executionTimeout초입니다!

그리고-이미 2015 년이기 때문에-NON- quickfix 의 경우 KEV가 2010 년에 답변했을 때 최첨단이었던 .NET 2.0의 ASYNC 페이지 대신 가능하면 .Net 4.5의 async / await 를 사용해야합니다. :).

<configuration>
    ...
    <compilation debug="false" ...>
    ... other stuff ..

    <location path="~/Admin/SomePage.aspx">
        <system.web>
            <sessionState timeout="240" />
            <httpRuntime executionTimeout="14400" />
        </system.web>
    </location>
    ...
</configuration>


답변

나는 이것을 여기에 게시하고 있습니다. 왜냐하면 나는 그것에 대해 3 시간과 4 시간을 보냈기 때문에 위의 것과 같은 답만 찾았 executionTime습니다. 그렇다면을 추가하십시오 .하지만 문제가 해결되지 않는 경우 당신이 사용하는 ASP .NET 코어 . 이를 위해 이것은 작동합니다.

web.config 파일 requestTimeout에서 aspNetCorenode에 속성을 추가하십시오 .

<system.webServer>
  <aspNetCore requestTimeout="00:10:00" ... (other configs goes here) />
</system.webServer>

이 예에서는 값을 10 분으로 설정합니다.

참조 : https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module#configuring-the-asp-net-core-module


답변

~그래서 위치에서 문자를 제거

path="~/Admin/SomePage.aspx"

된다

path="Admin/SomePage.aspx"


답변