هل تريد استرداد اسم موفر الخدمة المشتركة المرتبط؟

StackOverflow https://stackoverflow.com/questions/58809

سؤال

كيف يمكنك استرداد اسم موفر الخدمات المشتركة المرتبط بتطبيق ويب Sharepoint محدد برمجيًا؟

لدي حل مخصص يحتاج إلى:

  1. قم بتعداد جميع تطبيقات الويب التي تم نشرها عليها
  2. اكتشف مزود الخدمات المشتركة الذي يرتبط به كل تطبيق من تطبيقات الويب
  3. قم بالوصول إلى كتالوج بيانات الأعمال المثبت على SSP لاسترداد بعض البيانات
  4. تعداد جميع مجموعات الموقع في تطبيقات الويب تلك
  5. تنفيذ مهام مختلفة ضمن مجموعات الموقع وفقًا للبيانات

لقد حصلت على النقاط 1 و3 و4 و5، لكن النقطة 2 مزعجة إلى حد ما.أريد تجنب ترميز اسم SSP في أي مكان وعدم مطالبة مسؤول المزرعة بتحرير ملف التكوين يدويًا.جميع المعلومات التي أحتاجها موجودة في قاعدة بيانات تكوين Sharepoint، أريد فقط معرفة كيفية الوصول إليها من خلال نموذج الكائن.

هل كانت مفيدة؟

المحلول

لسوء الحظ لا توجد طريقة مدعومة أعلم أنه يمكن القيام بذلك.الفئة ذات الصلة هي SharedResourceProvider في مساحة الاسم Microsoft.Office.Server.Administration، في Microsoft.Office.Server DLL.لقد تم وضع علامة عليها داخليًا لذلك للتفكير المسبق:

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 عبر قاعدة بيانات التكوين وهو أمر غير مستحسن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top