2016-08-03 1 views
1

aspx 페이지의 비 코드 작업에서 비동기 작업을 실행하려고합니다. 비동기 메서드를 실행하려면 Page.RegisterAsyncTaskPage.ExecuteRegisteredAsyncTasks을 사용하고 있습니다.동일한 사이트에서 ashx 및 aspx 파일 모두에서 await/async를 어떻게 사용할 수 있습니까?

그러나 웹 사이트 파일에 <httpRuntime targetFramework="4.5" />을 추가해야한다고 말하는 오류가 발생하지만 해당 행을 추가하면 async/await을 사용하면 내 ashx 페이지에서 오류가 발생합니다.

현재로서는 비동기 작업을 시작할 수 없습니다. 비동기 작업은 비동기 처리기 또는 모듈 내에서만 또는 페이지 수명주기의 특정 이벤트 중에 시작될 수 있습니다. 페이지를 실행하는 동안이 예외가 발생하면 페이지가 < % @ Page Async = "true"%>로 표시되는지 확인하십시오. 이 예외는 ASP.NET 요청 처리 내에서 일반적으로 지원되지 않는 "비동기 void"메서드를 호출하려는 시도를 나타낼 수도 있습니다. 대신 비동기 메서드는 Task를 반환해야하며 호출자는이를 기다려야합니다.

비동기는/그래서이 가질 수있는 방법 <httpRuntime targetFramework="4.5" />를 추가하기 전에 ASHX 페이지에서 완벽하게 좋은 작품을 기다리고 비동기/await를 파일 두 종류의 작업?

+0

을 활용할 수있는

public override async Task ProcessRequestAsync(HttpContext context) 

내부에 자사 코드를 이동; 그것은 무엇으로부터 상속 받는가? ': HttpTaskAsyncHandler' 또는': IHttpAsyncHandler' 또는': IHttpHandler'? –

+0

'IHttpHandler'. 처리 요청은 processRequest 메소드 내부에 있습니다. 그것은 기다릴 수있는 라이브러리 방법을 사용하고 있습니다. 핸들러 자체는 무엇이든 기다리지 않습니다. –

+0

'IHttpHandler'를'HttpTaskAsyncHandler'로 바꾸면 속임수가 바뀌었습니다. –

답변

6

최근에 ashx 파일을 만들 때 기본적으로 파일을 비동기로 설정하는 것이 좋습니다. 이 프레임 워크는 새로운 HttpTaskAsyncHandler을 사용하여이를 지원합니다.

IHttpHandler 대신 HttpTaskAsyncHandler을 그냥 상속합니다.

그런 방법 삭제 :

public ProcessRequest(HttpContext context) 

을하고 작업 당신 ASHX 파일과 연관된 클래스

+0

대단히 고맙습니다. :) –

+0

너무 두려워하지 마십시오. 두 번이나 감사드립니다. – Terkhos

관련 문제