2010-06-17 5 views
1

WCF 웹 서비스를 만드는 동안 웹 브라우저 컨트롤과 함께 메서드를 사용하는 동안 문제가 발생했습니다. 이 메서드는 스레드를 시작하고 웹 브라우저 컨트롤을 사용하여 일부 양식을 채우고 더 이상 클릭하여 이벤트 처리기가 실행되어 필요한 대답을 반환 할 때까지 기다립니다. 이 메서드는 테스트를 거쳐 자체 환경 내에서 작동하지만 WCF 웹 서비스 환경에서 사용되므로 이벤트 처리기가 실행되지 않습니다. 그 결과는 끝나지 않는 기다리는 수동 응답이다. 새로운 스레드 때문에 또는 웹 서비스의 나쁜 이벤트 처리로 인해 발생합니까? 그렇다면 합리적인 해결책은 무엇입니까?WCF 웹 서비스 내에서 스레드 및 이벤트 처리기 사용

+0

"WebBrowser"가 * client *에 있습니다. 그렇습니까? –

+0

웹 응용 프로그램은 웹 서비스를 사용합니다. 웹 서비스는 다른 사이트에서 정보를 얻고 정보를 얻는 이벤트 핸들러가있는 자체 브라우저 요소가 필요합니다. 그래서 브라우저 1 -> 웹 응용 프로그램 -> 웹 서비스 -> 다른 사이트에서 작업 수행 (새 브라우저 -> URL 열기 -> URL 채우기 -> 확인 -> 응답 잡기 -> 프로세스 응답) -> 웹 서비스에 대한 응답 반환 – user368984

+0

'HttpWebRequest' 또는'WebClient'를 사용하면보다 효율적입니다. 동기 요청을 할 수 있기 때문입니다. – ErikHeemskerk

답변

0

Browser1 -> 웹 응용 프로그램 -> 웹 서비스 -> 다른 사이트 (새 브라우저에 대한 조치 수행 -> URL 열기 -> URL에 를 입력 -> 확인을 누릅니다 -> 캐치 응답 -> 프로세스 대답)

"새 브라우저"를 만드는 부분이 Windows 서비스, 자체 호스팅 WCF 서비스 프로세스 또는 내부의 서비스로 실행되는 경우 IIS; GUI가 없으므로 GUI 이벤트를 얻지 못할 가능성이 높습니다. GUI 이벤트 처리기는 다른 경우에 이러한 시나리오에서 사용할 수없는 Windows Message Pump를 필요로합니다.

Windows Forms 호스트에서 서비스를 호스팅하려고하면 제대로 작동 할 것입니다.

IIS 또는 Windows 서비스 (비 GUI)에서 시스템을 사용해야하는 경우 언제든지 모든 탐색 항목을 수행 할 수있는 메시지 펌프가있는 대리 호스트 프로세스와 통신 할 수 있습니다. 일단 당신의 "응답"이 웹 응용 프로그램으로 되돌려 보내질 수 있습니다.