0

COM+ コンポーネントを使用するアプリケーションがあります。このアプリケーションを IIS の複数のアプリケーションで動作させようとしています。各アプリケーションには、独自のアプリケーション プールがあります。そのため、アプリケーションごとに COM+ コンポーネントを 1 つずつ分離する必要があります。COM+ アプリケーションを分離する方法は、COM+ パーティションを使用することです。

Windows Server 2008 R2 サーバーのコンポーネント サービス管理ツールでパーティションを作成しました。パーティションを作成し、各パーティション内に COM+ アプリケーションを作成しました。IIS には、異なるアプリケーション プールで実行される個別の Web サイトがあります。パーティションを使用するように各 Web サイトを構成し、存在するパーティション GUID を割り当てます。パーティション GUID を使用して IIS をセットアップし、パーティションを使用できるようにした後、IISRESET の後にブラウザーで Web サイトを実行すると、HTTP 500 内部サーバー エラーが発生します。イベント ビューアを調べたところ、次のエラー メッセージが表示されました

コンポーネント サービス管理ツールでパーティションの使用を無効にし、IIS でのパーティションの使用も無効にすると、アプリケーションは機能します。複数の Web サイトをこれらの COM+ オブジェクトで同時に実行できるようにするには、パーティションを使用できる必要があります。

4

1 に答える 1

1

この件について多くの調査を行った結果、解決策を見つけました。IIS の PartitionId を使用せず、IIS のパーティションも有効にしないでください。デフォルト値のままにしておきます。

これに対する解決策は次のとおりです。各パーティションを 1 人のユーザーのデフォルト パーティションとして割り当て、各 IIS アプリケーション (および各アプリケーション プール) をデフォルト パーティションが使用するのと同じユーザーで実行する必要があります。つまり、基本的に、web1 と web2 という名前の 2 つの IIS アプリケーションと、app1 と app2 という 2 つのアプリケーション プール、2 人のユーザー user1 と user2、2 つのパーティション (part1 と part2) があるとします。web1 は user1 の下で実行し、app1 も user1 の下で実行する必要があります (app1 は web1 のアプリケーション プールです)。次に、コンポーネント サービスで、user1 に既定のパーティションである part1 が必要です。次に、web1 が COM+ コンポーネントを検索するとき、最初にその IIS アプリケーションのユーザー user1 に割り当てられたパーティションで検索を試みます。User1 にはデフォルトのパーティション part1 があるため、それが見つかります。

ヒント: Windows Server 2008 R2 で com+ パーティションを有効にするには、[コンポーネント サービス] > [マイ コンピューター] > それを右クリック > [プロパティ] > [オプション] タブ > [パーティションを有効にする] にチェックを入れ、もう 1 つ: [ユーザーのパーティションを選択するときにローカル ストアをチェックする] にチェックを入れます。パーティションは、Windows Server エディションでのみ有効にできます。このオプションは Windows 7 では無効になっており、有効にする方法が見つかりませんでした。

お役に立てれば。

各パーティションの下に COM+ アプリケーションを追加し、そこにもユーザーを追加して、ユーザーがアクセスできるようにすることを忘れないでください。そのため、コンポーネント サービスの [マイ コンピューター] の下にある [パーティション ロール] および [COM+ パーティション ユーザー] ディレクトリにユーザーを追加します。

于 2013-08-01T13:10:59.250 に答える