2015-04-29 4 views
0

я пытаюсь загрузить файл в Sharepoint с C# с использованием Microsoft Sharepoint клиентаЗагрузка файла в Sharepoint без пароля

я не имею никаких проблем, когда я создаю свой контекст и дать ему свое имя пользователя и пароль, как этот

   using (ClientContext ctx = new ClientContext(spSite)) 
       { 

        if (!System.IO.File.Exists(fileLocation)) 
         throw new FileNotFoundException("File not found.", fileLocation); 

        var credentials = new NetworkCredential("username", "password"); 
        ctx.Credentials = credentials; 
        Web web = ctx.Web; 

        ctx.Load(user); 
        ctx.ExecuteQuery(); 
        String fileName = System.IO.Path.GetFileName(fileLocation); 
        FileStream fileStream = System.IO.File.OpenRead(fileLocation); 

        ctx.Load(web.Folders); 
        ctx.ExecuteQuery(); 
        Folder spFolder = web.Folders.FirstOrDefault(x => x.Name.Equals(spListCleanName)); 

        FileCreationInformation fci = new FileCreationInformation(); 
        fci.Url = spSite + spLibraryName + file; 



        byte[] bytes = System.IO.File.ReadAllBytes(fileLocation); 
        fci.Content = bytes; 

        Microsoft.SharePoint.Client.File spFile = spFolder.Files.Add(fci); 
        spFile.ListItemAllFields.Update(); 
        ctx.ExecuteQuery(); 

       } 

, но моя проблема входит в учетную запись сети. есть ли способ использовать текущие учетные данные пользователей (через iis или .net или что-то еще), так что мне не нужно запрашивать их пароль? поскольку это не то, что мы хотим сохранить в обычном тексте в любом месте.

спасибо заранее

+0

ASP.NET позволяет использовать встроенную проверку подлинности Windows для достижения единого входа. – adamdc78

+0

как я могу это использовать? я попробовал использовать HttpClientHandler и установил учетные данные по умолчанию для true, но когда я пытаюсь установить его на свой объект ctx, он равен нулю – Sam

+0

Посмотрите на [ASP.NET] (http://www.asp.net/web-api/обзор/безопасность/встроенная проверка подлинности Windows); вам нужно настроить режим аутентификации на 'Windows'. – adamdc78

ответ

0

Используйте CredentialCache.DefaultCredentials (https://msdn.microsoft.com/en-us/library/system.net.credentialcache.defaultcredentials(v=vs.110).aspx) вместо объекта NetworkCredential.

Это будет использовать контекст безопасности пользователей.

+0

спасибо за ваше предложение. похоже, что он работает только для типов аутентификации «NTLM», «Digest», «Kerberos» и «Negotiate», мне действительно нужно, чтобы это были окна. когда я проверил учетные данные, они были пусты – Sam

Смежные вопросы