是否可以使用与用于访问Sharepoint服务器的凭据相同的凭据,从已从sharepoint服务器下载的Excel工作表中进行Web服务调用?
我们目前正在开发一个Excel解决方案,它可以在Excel工作表中执行Web服务请求。这样可以正常工作,但用户必须至少登录两次:一个用于从Sharepoint下载/打开Excel工作表,另一个用于使用正确的凭据执行Web服务。
Sharepoint服务器和客户端计算机不在同一个Active Directory域中。所以“System.Security.Principal.WindowsIdentity.GetCurrent()”不是一个选项,因为这将返回服务器上不存在的用户。
答案 0 :(得分:0)
您可以使用VSTO(Office的Visual Studio工具)创建Excel插件。每次打开Excel时都会加载插件,并且可以包含按钮等。
要使用Sharepoint的系统帐户,您必须使用RunWithElevatedPrivileges。这有一些安全隐患! http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx
通常,Web服务会记录登录的用户凭据。 如果不是,您可以使用NetworkCredential类手动创建它们。
System.Net.CredentialCache myCredentials = new System.Net.CredentialCache();
NetworkCredential netCred = new NetworkCredential("UserName", "Password");
myCredentials.Add(new Uri(myService.Url), "Basic", netCred);
myService.Credentials = myCredentials;
//在此处访问您的网络服务方法