3

IIS 7 で、要求ごとに 1 つのスレッドを強制的に使用し、要求中にスレッドを切り替えることを許可しない設定を知っている人はいますか? それとも従来のスレッド モデルに戻りますか?

私たちの問題は、リクエスト全体であり、最初から最後まで異なるデータベースへの複数の接続を使用し、TransactionScope を使用してデータの整合性を保証したいと考えています (軽量トランザクションとして開始し、2 番目の接続が確立されると、分散トランザクションに昇格します)。 .

リクエストごとに 1 つのスレッドが必要な理由は、トランザクションを開始したスレッドとは異なるスレッドでトランザクションを破棄しようとすると、トランザクションを開始したのと同じスレッドで破棄する必要があることを示す例外がスローされるためです。その後、トランザクションがリークし、何もコミットされず、マシンがゆっくりと停止します。

4

2 に答える 2

1

サポートされている .net のバージョン (当時は 4.0) では、これを行う方法はありませんでした。そのため、分散トランザクションのカバレッジを取り下げることを余儀なくされました。

理論的には、 .net 4.5.1 TransactionScopeAsyncFlowOptionでそれを行うことができます

于 2014-06-25T14:17:51.943 に答える