1

私はcsharpで書いたアプリケーションサーバーを持っています。サーバーは、FLEX 4 (Flash Builder 4.5) を使用して構築された Flash クライアントと通信しています。

サーバーとクライアント間の通信は RTMP を使用して行われます。

サーバー側の RTMP 機能には、(IIS7 でホストされている) FluorineFX を使用しました。

すべての接続は、Flash クライアントがサーバーでリモート プロシージャを実行し、RPC 応答コールバック関数で結果を取得するリモート プロシージャ コールを使用して行われます。

サーバーは、RPC を使用してクライアントにメッセージを送信することもできます。

私の問題は、最後のクライアントが接続してから 6 分後にサーバーがすべてのクライアントを切断することであり、その理由がわかりません。

services-config.xml は次のようになります。

<services-config>    
  <channels>        
    <channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">
      <endpoint uri="rtmp://{server.name}:1935" class="flex.messaging.endpoints.RTMPEndpoint"/>
    </channel-definition>
  </channels>
</services-config>

web.config には、次の構成が含まれています。

<fluorinefx>
    <settings>          
      <rtmpServer>
        <threadpool minWorkerThreads="0" maxWorkerThreads="25" idleTimeout="60000"/>
        <rtmpConnection pingInterval="0" maxInactivity="60000" maxHandshakeTimeout="0"/>
        <rtmptConnection pingInterval="5000" maxInactivity="60000" maxHandshakeTimeout="5000"/>
        <rtmpTransport receiveBufferSize="4096" sendBufferSize="4096" tcpNoDelay="true"/>
  </rtmpServer>
</settings>

タイムアウトを解決する助けをいただければ幸いです

コビー

4

1 に答える 1

1

問題は解決しました。

これは、IIS7 アプリケーション プールの構成が原因でした。アプリケーション サーバーの 1 つで、アプリケーション プールのアイドル タイムアウトが 6 分に設定されていました。そのため、アプリケーションへの http 要求がない状態で 6 分後に、アプリケーション プールはフッ素ゲートウェイを含むすべてのアセンブリをアンロードしました。

ゲートウェイのアセンブリがアンロードされると、ゲートウェイが停止し、すべての接続が終了します。

アプリケーション プールのアイドル タイムアウトを変更する方法は次のとおりです。

IIS 6の場合: [アプリケーション プール] セクションに移動し、問題の ASP.NET アプリケーションをホストするプールで [プロパティ] を右クリックします。[パフォーマンス] タブに移動し、[次の時間アイドル状態になった後にワーカー プロセスをシャットダウンする] のチェックを外します。

IIS 7 の場合: [接続] ウィンドウに移動して [アプリケーション プール] を見つけ、アプリケーションをホストするプールの [詳細設定] を選択します。"Idle Timeout" プロパティを見つけて "0" に設定します (これによりタイムアウトが無効になります)。

コビー

于 2011-07-16T14:23:57.710 に答える