none
HttpTransport の接続タイムアウトの設定はできますか? RRS feed

  • 質問

  • みなさんのお知恵をお貸しください。

    HttpTransport を使った customBinding の場合、

    .NET Framework クラス ライブラリ
    Binding.SendTimeout プロパティ
    http://msdn.microsoft.com/ja-jp/library/system.servicemodel.channels.binding.sendtimeout.aspx

    このプロパティを設定した場合、ソケット接続 ~ HTTP POST ~ 100 Continue ~ エンコードした要求メッセージを送信 ~ 200 OK ~ エンコードされた応答メッセージを受信、という流れのどの部分のタイムアウトに相当するのでしょうか?

    あと、できれば接続タイムアウトは分けて設定したいのですが、WCF の HttpTransport で可能でしょうか?
    カスタムトランスポートを作らないと無理でしょうか・・・。
    2009年12月23日 8:42

すべての返信

  • 例えばネットワークに問題があってサーバーに接続できない場合、SendTimeout プロパティが 60分 に設定されている場合は、

    ReliableSession が無効 ... 約21秒後(接続が失敗した時)に System.ServiceModel.EndpointNotFoundException
    ReliableSession が有効 ... 60分後に System.TimeoutException

    という動作になります。


    ReliableSession が有効としつつ、接続が失敗した時点で例外にできないだろうか?という発想から、「HttpTransport の接続タイムアウトの設定はできますか?」という質問になりました。


    いろいろ調べてみたのですが、HttpTransport では、接続時にソケット接続を行い、接続が失敗すれば例外、という動作をしているようです。(接続タイムアウトなんてものが存在しない)
    また、ReliableSession が有効な場合はエラーをマスクして、接続を再確立します。


    SendTimeout を60分としなければ実行できないような処理は、そもそも ReliableSession に向かないのでしょうか。
    2010年1月14日 7:51