使用Web服务作为当前用户添加列表项

时间:2011-11-18 15:53:12

标签: c# asp.net web-services sharepoint

我可以使用asp.net Web应用程序将列表项成功添加到列表中。然而,"创建者" field保存服务器的名称,而不是访问该站点的当前用户。

服务器A托管我的asp.net网络应用程序。用户访问该站点,单击一个按钮,该项将该项添加到承载SharePoint站点的服务器B。我无法访问服务器B,因此使用了Web服务。

这是我目前的代码:

webreference.Lists myList = new webreference.Lists();  
//have also tried DefaultNetworkCredentials   
myList.Credentials = System.Net.CredentialCache.DefaultCredentials;    
myList.Url = "http://site/_vti_bin/lists.asmx";    
XmlDocument doc = new XmlDocument();    
XmlElement batch = doc.CreateElement("Batch");   
batch.SetAttribute("OnError", "Continue");   
batch.InnerXml = "<Method ID='1' Cmd='New'>" +   
"<Field Name='Title'>Test</Field>" +    
"</Method>";    
myList.UpdateListItems("{LIST GUID}", batch);

1 个答案:

答案 0 :(得分:1)

我认为,为了在层之间传递这样的凭据,您需要使用Kerberos进行委派。否则DefaultCredentials将为null。这被称为NTML“双跳”问题。请看this post on MSDN Forums where the fellow suggests changing NTAuthenticationProviders