不幸的是,我知道没有支持的方式可以做到这一点。相关类是 Microsoft.Office.Server.Administration 命名空间中的 SharedResourceProvider,位于 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 查询。