2011-05-02 50 views
0

ADO.NetアプリケーションのSQL ServerへのADO-DB接続に問題があります。 Webサービスの開始時および終了時に接続を開きます。サービスが実行されている限り、接続が開かれていることを意味します。 実際にトランザクションを処理するCOM DLLに接続を渡しています。 私は今、1つの問題に直面しています。同じ実行が以前に働きましたが、しばらくしてからコマンドが例外をスローします。しかし、接続状態はOpenのみを示します。 接続を閉じてから、トランザクションを再試行する必要があります。この方法で動作します。 しかし、私は根本的な原因を知りたいと思っています。 もう1つのこと、私たちはただ1人のクライアントしかいません。ADODB接続をしばらく開いておく

+0

あなたにはどんな例外がありますか?サービスの開始時に接続を開くとどういう意味ですか?リクエストごとに接続を開くことを意味しますか、またはアプリケーションの全ライフタイムに一度だけ接続を開きますか? COMコンポーネントは接続と何をしますか?あなたが非常に重要な詳細を見逃したので、あなたの質問を改善してください。 –

+0

C++(COM dll)から例外はE_FAILです.Netで同じことをテストしたときの例外は "Connection failure"です。Webサービスが開始されたときに接続を開始しています(アプリケーションの全期間のみ) .COMコンポーネントは実際にすべてのトランザクションを実行するコンポーネントです。接続オブジェクトはCOMコンポーネントに渡されます。 – Sana

答えて

0

アプリケーションのライフタイム全体にわたって接続を維持することは悪い習慣です。接続にはタイムアウトがあり、ネットワーク上の問題などがあります。接続は単に失敗する可能性があり、回避する方法はありません。例外を捕まえて何らかの形で処理する必要があります。また、単一接続で2つの同時トランザクションを持つことができないため、複数の要求を同時に処理することはできません。

正しい方法は、Webサービス要求ごとに新しい接続を作成することです。 .NETはデフォルトで接続プールを使用するため、パフォーマンスへの影響はごくわずかです。

+0

ADODB.ConnectionはデフォルトでC#.Netの接続プーリングを提供しますか? – Sana

+0

どのように接続を作成しますか?あなたの質問にいくつかのコードを表示してください。それは.NET接続かinteropですか? –

+0

接続の作成は次のようになります – Sana

関連する問題