WS_SERVICE_CLOSE_CHANNEL_CALLBACK コールバック関数 (webservices.h)

エンドポイントでチャネルが閉じられたり中止されたりしたときに呼び出されます。 このコールバックは、チャネルを閉じる直前に呼び出されます。

サービス ホストが実行中で、クライアントがチャネルをクリーンに閉じた場合の通常の操作の場合、これはクライアントからセッションクローズを受け取り、チャネルを閉じようとしていることを意味します。

もう 1 つのシナリオは、サービス ホストが Abort Shutdown を通過するとき、またはメッセージの処理中に回復不可能なエラー条件が満たされた場合です。その結果、チャネルを中止してから閉じようとします。 この場合も中止の直前に、このコールバックを呼び出します。

セッション ベースのサービス コントラクトの場合、この通知はセッションの破棄を示します。 したがって、セッションのスコープが設定されたアプリケーションの状態は、このコールバック内で破棄できます。

構文

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