2008-09-12 4 views
2

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

は私が必要とするカスタムソリューションを持っていた:

  1. 列挙それはWebアプリケーションのそれぞれが
  2. アクセスAに関連付けられている共有サービスプロバイダから
  3. 図に配備されていますすべてのWebアプリケーションをSSPにインストールされたビジネスデータカタログ
  4. これらのWebアプリケーションのすべてのサイトコレクションを列挙します。
  5. データに基づくサイトコレクション

私は計算した1,3,4,5点を得ましたが、2はやや面倒です。私はどこにでもSSP名をハードコーディングしないようにしたいのですが、ファーム管理者は手動で構成ファイルを編集する必要はありません。私が必要とするすべての情報はSharepoint構成データベースにあり、オブジェクトモデルを使ってアクセスする方法を知る必要があります。

答えて

2

残念ながら、これが実行可能であることがわかっている方法はありません。関連するクラスは、Microsoft.Office.Server.Administration名前空間のMicrosoft.Office.Server DLLの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クエリを書くことであろうことは、内部のであらかじめ反射がマークされています。

関連する問題