2010-05-26 4 views
18

수정할 수없는 ASP.NET 웹 응용 프로그램이 있습니다 (바이너리 만 있습니다). 이 응용 프로그램은 웹 서비스에 연결하고 연결이 클라이언트 측 (내 웹 응용 프로그램)에서 닫힌 것처럼 보입니다. 대상 서버의 machine.config에서 "executionTimeout"을 늘었지만 내 웹 응용 프로그램은 잠시 기다린 후에도 멈춘 것처럼 보입니다.웹 서비스 요청 시간 제한을 늘리는 방법은 무엇입니까?

단순히 web.config를 수정하여 웹 응용 프로그램의 시간 초과 시간을 늘릴 수 있습니까? 내가 말했듯이 ... 나는 코드에서 타임 아웃을 수정할 수 없기 때문에 유일한 옵션은 설정 파일을 통해 이루어진다.

감사합니다.

+0

어떤 종류의 웹 서비스입니까 ?? ASP.NET/ASMX 또는 WCF ?? 일반적으로 ASMX는 코드에서 처리됩니다. 단, config에서 시간 초과를 지정할 수 있도록 특별히 설정 한 경우는 예외입니다. WCF는 단지 모든 것에 대한 설정입니다 .... –

+0

원격 웹 서비스는 실제로 ASP.NET ASMX 웹 서비스입니다. 앞에서 언급했듯이 내 앱에서 코드를 변경할 수 없습니다 (바이너리 만 있기 때문에). – sachaa

+0

설정 파일이 있습니까? – Nix

답변

24

시도해보십시오.

먼저, httpRuntime 요소의 executionTimeout 속성의 시간 초과를 늘려야합니다. 이것은 세션 시간 초과 및 기타와 같은 다른 시간 초과 속성과 달리 초 단위로 언급됩니다.

<httpRuntime 
    executionTimeout="36000" 

또한이 특성은 Compilation 요소의 debug 특성을 false로 설정 한 경우에만 적용됩니다. 이것은 또한 언급 한 MSDN 링크에 지정되어 있습니다. 마찬가지로,

<compilation 
    debug="false" 
../> 

그러나 이것은 세션 시간 초과와 함께 작동합니다. 예, 세션 시간이 초과되면 오류가 발생합니다. executionTimeout 값이 적용될 때까지 기다리지 않습니다. 세션 시간 제한을 더 높은 값으로 설정해야합니다. 그리고 이것은 분 안에 있습니다. 어떤 모양입니까?

그리고이 모든 것은 AppPool 재활용 프로세스에 의해 무시됩니다. 그래서 웹 사이트가 사용하는 Apppool의 Idle Timeout 값을 세션 타임 아웃보다 atleast/higher 값으로 설정해야합니다.

여기 http://www.eggheadcafe.com/community/aspnet/17/10111748/how-can-we-increase-the-t.aspx

+0

세션의 요청이 실행되는 동안 세션이 시간 초과 될 수 있다는 것에 약간 놀랐습니다. –

+0

그런데 디버그를 false로 설정하면 thw VS2008 "dummy IIS"에서도 테스트 할 수 있습니다. – daitangio

+2

36000 초 = 600 분 – martijn

4

을 찾았 웹 응용 프로그램의 기본 시간 제한은 범용 사용하기에 충분 일반적으로 더 90 초입니다. 타임 아웃이 어디에서 오는지주의하는 것이 중요합니다. 그것은 페이지 자체에서 발생했는지 또는 페이지에서 발생시키는 것입니까? 두 경우 모두 "페이지"가 ​​시간 초과 된 것처럼 보입니다.

내 페이지가 너무 늦어서이 질문에 마주 쳤습니다. 정말 SQL 문제 그래서 SQL (실제 오류 읽기)에서 오는 예외를 발견했다. 일단 내가 알았 더라면 쉽게 고칠 수 있었다.

+0

너무 자주 젊은 개발자가 타임 아웃 펌프로 곧바로 돌기 때문에이 항목을 +1했습니다. 실제로 Regex 나 SQL 쿼리와 같이 인덱스 필드 나 무언가를 사용하지 않는 호출이 문제가됩니다. 항상 먼저 Timout이 충분히 길다고 가정하고 코드에서 최적화 될 수 있으므로 실행 중입니다. 교육 된 디자인 결정만으로 executionTimeout을 늘려야합니다. – Suamere

+0

내 제한 시간은 동료가 작성한 1 분 43 초의 쿼리로 인해 발생했습니다. 매우 복잡한 하위 절이 있었고 선택 항목에서 선택하기가 두려웠습니다. 하지만 하나의 절을 임시 테이블로 가져 와서 쿼리의 하위 절 대신 임시 테이블에서 LEFT (, LEN (REPLACE (....))) 쿼리를 실행했습니다. 그런 다음 쿼리를 임시 테이블에 조인했습니다. 실행 시간 : 2 초. 30 분 정도 걸렸어. 손가락에 불었다. – Resource

관련 문제