Вы используете Thread.Join
, чтобы приостановить поток пользовательского интерфейса, пока не будет выполнен другой поток. В то же время вы используете Control.Invoke
, чтобы поток пользовательского интерфейса выполнял некоторые действия. Это не сработает, потому что поток пользовательского интерфейса ожидает завершения другого потока.
Я бы предложил вам либо удалить вызов Thread.Join
, либо выполнить свое действие в потоке пользовательского интерфейса, если вы хотите, чтобы он подождал для завершения действия.
Привет всем, я получил ответ на свой вопрос. Надеюсь, это сработает для всех вас ... Сначала добавьте ссылку на файл MicrosoftSharepoint.dll в свою веб-часть. затем напишите с использованием Microsoft.SharePoint;
string username;
string sspURL = "URL where Sharepoint is deployed";
SPSite site = new SPSite(sspURL);
SPWeb web = site.OpenWeb();
SPUser user = web.CurrentUser;
username = user.LoginName;
site.AllowUnsafeUpdates = true;
С уважением, Jigar <3
У меня сработало следующее:
SPWeb theSite = SPControl.GetContextWeb(Context);
SPUser theUser = theSite.CurrentUser;
string strUserName = theUser.LoginName;
и проверьте это .
Вы можете использовать:
SPWeb web = SPControl.GetContextWeb(this.Context);
string userName = web.CurrentUser.LoginName;
или
string userName = this.Context.User.Identity.Name;
И вы должны проверить this.Context.User.Identity.IsAuthenticated
также, чтобы убедиться, что пользователь вошел в систему, прежде чем пытаться извлечь имя пользователя.
// не забудьте добавить System.DirectoryServices.AccountManagement в качестве ссылки и использовать System.DirectoryServices.AccountManagement;
PrincipalContext insPrincipalContext = new PrincipalContext(ContextType.Domain, "MyDomain","DC=MyDomain,DC=com");
UserPrincipal insUserPrincipal = new UserPrincipal(insPrincipalContext);
insUserPrincipal.Name = "*";
PrincipalSearcher insPrincipalSearcher = new PrincipalSearcher();
insPrincipalSearcher.QueryFilter = insUserPrincipal;
PrincipalSearchResult<Principal> results = insPrincipalSearcher.FindAll();
foreach (Principal p in results)
{
Console.WriteLine(p.Name);
}