كيفية التحدث مع شير: إذا أنا فقط حصلت على اسم كامل
-
03-07-2019 - |
سؤال
ويبدو أن كل جهد التحدث إلى SharePoint من خلال خدماتها على شبكة الإنترنت يحتاج إلى اسم مستخدم مجال \. على سبيل المثال:
UserProfileService.GetUserProfileByName(string accountName)
ويجب أن يكون اسم الحساب اسم النطاق المستخدم \.
إذا أنا فقط حصلت على الاسم الكامل (الاسم الأول اسم العائلة)، هل من الممكن التواصل مع SharePoint؟ هل هناك أي طريقة لتحويل الاسم الكامل في المجال \ اسم المستخدم؟ والمجال \ المستخدم اسم السبيل الوحيد للقيام بذلك؟
وشكرا لكم مقدما. :)
وشكرا لك على الإجابات. :)
والرمز يبدو مثل هذا:
using System.DirectoryServices;
const string ADPATH = "LDAP://myLDAPserver,validUserforAD";
const string USERNAME = "myDomain\\myUserName";
const string PASSWORD = "myPassword";
const string DOMAIN = "myDomain\\";
public static DirectoryEntry GetDirectoryObject()
{
DirectoryEntry directoryObject = new DirectoryEntry(ADPATH, USERNAME, PASSWORD, AuthenticationTypes.Secure);
return directoryObject;
}
public string GetUserNameByCompleteName(string completeName)
{
DirectoryEntry adObject = GetDirectoryObject();
//filter based on complete name
DirectorySearcher searcher = new DirectorySearcher(adObject);
searcher.Filter = "displayname=" + completeName;
SearchResult result = searcher.FindOne();
DirectoryEntry userInfo = result.GetDirectoryEntry();
//getting user name
string userName = (string)userInfo.Properties["samaccountname"].Value ?? string.Empty;
userInfo.Close();
adObject.Close();
return DOMAIN + userName;
}
المحلول
وأفترض أنك يمكن أن محاولة الاستعلام الدليل النشط للاسم الأول والأخير للمستخدم لتحديد اسم حسابه.
نصائح أخرى
UserGroup.GetAllUserCollectionsFromWeb()
و يمكن تكرار النتائج للحصول على تسجيل الدخول اسم لاسم العرض معينة.
ويمكنك استخدام عنصر تحكم PeopleEditor
، والتي سوف الاستيلاء على المستخدم إذا كتبت في اللقب، والجمع بين الاسم الأول، أو يمكنك من خلال تصفح الدليل.
people = new PeopleEditor();
people.MultiSelect = false;
this.Controls.Add(people);
...
int userID = Int32.Parse((((PickerEntity)people.ResolvedEntities[0]).EntityData["SPUserID"]).ToString());
SPUser user = SPContext.Current.Site.RootWeb.SiteUsers.GetByID(userID);
وانها مرهقة بعض الشيء ومثير للسخرية، لكنه يعمل. إذا كنت بحاجة للحصول عليه برمجيا، يمكنك أن تفعل كما قال جيسون أعلاه والحصول على SPUserCollection
وحلقة من خلال، وتبحث عن SPUser
مع اسم العرض المناسبة.