다음을 통해 공유


WS_SERVICE_CLOSE_CHANNEL_CALLBACK 콜백 함수(webservices.h)

채널이 닫혀 있거나 엔드포인트에서 중단될 때 호출됩니다. 이 콜백은 채널을 닫기 직전에 호출됩니다.

서비스 호스트가 실행 중이고 클라이언트가 채널을 완전히 닫은 경우 정상적인 작업의 경우 이는 클라이언트로부터 세션 닫기를 수신했으며 채널을 닫을 것임을 의미합니다.

다른 시나리오는 서비스 호스트가 중단 종료를 거치거나 메시지를 처리하는 동안 복구할 수 없는 오류 조건이 충족되는 경우입니다. 이로 인해 채널을 중단한 다음 닫으려고 시도합니다. 이 경우 중단 직전에 이 콜백을 호출합니다.

세션 기반 서비스 계약의 경우 이 알림은 세션 중단을 의미합니다. 따라서 세션 범위가 지정된 애플리케이션 상태는 이 콜백 내에서 제거될 수 있습니다.

구문

WS_SERVICE_CLOSE_CHANNEL_CALLBACK WsServiceCloseChannelCallback;

HRESULT WsServiceCloseChannelCallback(
  [in]           const WS_OPERATION_CONTEXT *context,
  [in, optional] const WS_ASYNC_CONTEXT *asyncContext
)
{...}

매개 변수

[in] context

작업 컨텍스트입니다.

[in, optional] asyncContext

함수가 비동기적으로 호출되는지 여부에 대한 정보입니다.

반환 값

이 콜백 함수는 값을 반환하지 않습니다.

설명

반환된 HRESULT는 함수가 비동기적으로 완료되는지 확인하는 데만 사용됩니다. HRESULT를 통한 오류 또는 보고 실패는 서비스 호스트 인프라에 어떤 식으로든 영향을 주지 않습니다.

WS_SERVICE_ACCEPT_CHANNEL_CALLBACK 성공적으로 경쟁했는지 여부에 관계없이. 이 함수는 항상 발생합니다.

또한 애플리케이션에서 상태를 연결하는 데 사용할 수 있는 WS_SERVICE_ACCEPT_CHANNEL_CALLBACK 참조하고 채널이 수락될 때 호출됩니다.

세션 상태를 분리하기 위해 이 콜백을 사용하는 방법에 대한 예제 구현은 세션 기반 계산기 샘플을 참조하세요.

이 콜백은 취소할 수 있습니다.

예제

HRESULT CALLBACK FreeSessionCalculator (const WS_OPERATION_CONTEXT* context,
                                        const WS_ASYNC_CONTEXT* asyncContext)
{
     HRESULT hr = NOERROR;
     SessionfulCalculator* calculator = NULL;
     hr = WsGetOperationContextProperty (context, 
                                         WS_OPERATION_CONTEXT_PROPERTY_CHANNEL_USER_STATE, 
                                         &calculator, sizeof (SessionfulCalculator*), NULL);
     if (SUCCEEDED(hr) && (calculator != NULL))
     {                                                       
         delete calculator;
     }
     return NOERROR;
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 webservices.h