我们的网络应用程序可以从Sharepoint下载文件并将其显示给用户,但前提是我提供了个人用户名和密码。我收到一条建议:我们“应该使用AppPool的凭据(UseDefaultCredentials=True.
)”
我可以对UseDefaultCredentials=True
进行哪些更改?什么是UseDefaultCredentials=true
?
string documentName = null;
string contentType = "unknown";
// We don't want to use this method of credentials
System.Net.NetworkCredential cred = new System.Net.NetworkCredential("USERNAME", "PASSWORD");
ClientContext clientContext = new ClientContext("http://MOSSSERVER/MYDIRECTORY");
clientContext.Credentials = cred;
FileInformation fileInformation = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, reference);
documentName = Path.GetFileName(reference);
return new FileStreamResult(fileInformation.Stream, contentType)
{
FileDownloadName = documentName
};
答案 0 :(得分:2)
根据MSDN,"the Client Object Model automatically uses the default credentials."您是否尝试过在客户端上下文中设置凭据?以下内容也显示在同一链接中:
context.Credentials = CredentialCache.DefaultCredentials;
答案 1 :(得分:2)
看看这个问题:
Getting NetworkCredential for current user (C#)
如果您只是让客户端上下文使用正在运行它的进程的凭据,那么您将使用应用程序池的凭据。如果您不提供任何凭据,它可能会默认使用当前用户上下文。
您还需要确保应用程序池凭据也可以访问该文件。您可以在应用程序池的高级设置下在IIS中配置应用程序池用户,并选择有权访问共享点文件的用户。
如果您只是在visual studio的上下文中运行,那么当前登录的用户将被设置为默认凭据。