2

特定の SharePoint Web アプリケーションに関連付けられている共有サービス プロバイダーの名前をプログラムで取得するにはどうすればよいですか?

次のことを行う必要があるカスタム ソリューションがあります。

  1. デプロイ先のすべての Web アプリケーションを列挙する
  2. 各 Web アプリケーションが関連付けられている共有サービス プロバイダーを特定します。
  3. SSP にインストールされているビジネス データ カタログにアクセスしてデータを取得する
  4. それらの Web アプリケーションのすべてのサイト コレクションを列挙する
  5. データに従って、サイト コレクション内でさまざまなタスクを実行します。

ポイント1、3、4、5は解りましたが、2はちょっと面倒です。SSP 名をどこにもハードコーディングしたり、ファーム管理者が構成ファイルを手動で編集する必要がないようにしたいです。必要な情報はすべて SharePoint 構成データベースにあります。必要なのは、オブジェクト モデルを介してデータベースにアクセスする方法だけです。

4

1 に答える 1

1

残念ながら、これを実行できることを私が知っているサポートされている方法はありません。関連するクラスは、Microsoft.Office.Server DLL の Microsoft.Office.Server.Administration 名前空間の SharedResourceProvider です。内部とマークされているため、事前に反映されます。

SharedResourceProvider sharedResourceProvider = ServerContext.GetContext(SPContext.Current.Site).SharedResourceProvider;
string sspName = sharedResourceProvider.Name;

事後反射:

ServerContext sc = ServerContext.GetContext(SPContext.Current.Site);
PropertyInfo srpProp = sc.GetType().GetProperty(
    "SharedResourceProvider", BindingFlags.NonPublic | BindingFlags.Instance);
object srp = srpProp.GetValue(sc, null);
PropertyInfo srpNameProp = srp.GetType().GetProperty(
    "Name", BindingFlags.Public | BindingFlags.Instance);
string sspName = (string)srpNameProp.GetValue(srp, null);

別の方法は、推奨されていない構成データベースに対して SQL クエリを記述することです。

于 2008-09-15T12:46:45.427 に答える