2011-04-22 155 views
1

我们的网络应用程序能够从Sharepoint下载文件并将它们呈现给用户,但仅限于我提供个人用户名和密码的过程。我收到了一个建议:我们应该使用AppPool的凭证(UseDefaultCredentials=True.)“如何使用AppPool凭证?

我为了与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

退房这个问题:

Getting NetworkCredential for current user (C#)

如果你可以得到使用运行它,那么你将要使用的应用程序池的凭据过程中的凭据客户端上下文。如果您不提供任何凭据,它可能会默认使用当前的用户上下文。

您将需要确保应用程序池凭据也可以访问该文件。您可以在应用程序池的高级设置下的IIS中配置应用程序池用户,并选择有权访问共享点文件的用户。

如果您只是在visual studio的环境中运行,那么当前登录的用户将被设置为默认凭据。

2

根据MSDN,"the Client Object Model automatically uses the default credentials."你试过没有设置客户端方面的凭据?以下内容也显示在同一链接上:

context.Credentials = CredentialCache.DefaultCredentials;

+0

我没有。很难获得真实的环境。至少在我进行讨论时,这里的回答将有助于我进行知情的讨论。尽管我会回来标记适当的答案。 – MedicineMan 2011-04-22 21:21:10

+0

这个答案也适用。可悲的是,我不能将两个答案都标记为正确的。 – MedicineMan 2011-04-29 20:20:24