我可以使用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);
答案 0 :(得分:1)
我认为,为了在层之间传递这样的凭据,您需要使用Kerberos进行委派。否则DefaultCredentials将为null。这被称为NTML“双跳”问题。请看this post on MSDN Forums where the fellow suggests changing NTAuthenticationProviders。