2

WCFサービスとADAM/AzManを使用するカスタムメンバーシッププロバイダーがあります。最近、多くのエラーが発生しています。これは、Webアプリケーションのより多くの使用に対応しているようです。

Webアプリケーションで、ユーザーがログインするたびに、Administratorsアカウントに更新が行われていることを発見しました。

頻繁に使用すると、2つの異なるプロセスがAdminitratorsアカウントのプロファイル情報を更新しようとしているようです。私が見ているエラーは次のとおりです。

COMException - Cannot create a file when that file already exists.

これはAzManから来ています。

私の質問は次のとおりです。ADAM/AzManの同じレコード(または同じADAMインスタンス)で同時更新を試みるとエラーがスローされ、予想以上のエラーが発生しますか?

編集管理者アカウントを絶えず更新していたコードを削除しました。これにより、エラーが大幅に減少しました。それでも時々エラーが発生します。すべて同じADAMインスタンスを使用するアプリケーションがいくつかあります。これらのアプリのいくつかがADAM内のデータを更新しようとすると、問題が発生する可能性がありますか?

4

1 に答える 1

0

読み方はこちら

ポリシーが XML に格納されている場合、承認マネージャは同時実行をサポートしません

承認マネージャは、同時実行をサポートするために Active Directory を利用します。Active Directory と ADAM には、同時加算と減算をサポートする非トランザクション モデルが あります。多値またはリンクされたオブジェクト属性の。Active Directory と ADAM では、オブジェクト属性への変更は (属性レベルで) アトミックであるため、2 つの変更のメッシュである属性はありません。Active Directory は、「最後のライターが優先する」メカニズムを使用して、持続する書き込み要求を決定します。属性がマージされることはありません。1 つの書き込み要求 (最後に受信した書き込み) が常に優先されます。AD にリンクされた属性 (承認マネージャーの役​​割とグループのメンバーシップ、または操作、タスク、および役割の定義間のリンクなど) の変更は追加されます。そのため、同時にユーザーを追加または削除したり、操作、タスク、およびロールをリンクおよびリンク解除したりすることがサポートされています。でも、承認マネージャー MMC スナップイン UI は、ストアが他の UI またはアプリケーションから変更されたときに更新されないクライアント側キャッシュを保持します。したがって、複数の同時管理者を必要とするアプリケーションには、カスタム UI が必要です。

個人的には、承認マネージャー ポリシー ストアとして SQL Server を使用することを好みます。新しい SQL ベースのポリシー ストアを作成し、対応するデータベース内を調べると、ほとんどすべてのテーブルにRowUpdateTimeStampそのタイプの列が表示されます。timestampそれ以上に、多くのテーブルにはタイプとトリガーの追加ChildUpdateTimeStampの列があります。これらすべては、少なくとも SQL ベースの承認マネージャー ポリシー ストアが同時実行をサポートするように設計されていることを示しています。問題は、この部分が実際には文書化されておらず、正確にどのエラー/例外が発生するかが明確でないことだけです。binary(8)XX_UpdateParentTimeStampOnXXX

もう1つの発言。IAzAuthorizationStore::UpdateCacheをまだ使用していない場合は、AzMan ストアに変更を加える前に使用することを検討できます。

于 2010-12-24T14:36:20.107 に答える