我如何使用AppPool凭据?

时间:2011-04-22 20:32:47

标签: .net asp.net-mvc security sharepoint credentials

我们的网络应用程序可以从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
};

2 个答案:

答案 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的上下文中运行,那么当前登录的用户将被设置为默认凭据。