كيفية التحدث مع شير: إذا أنا فقط حصلت على اسم كامل

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

  •  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 مع اسم العرض المناسبة.

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