我试图从asp.net应用程序调用GetListItems。
System.Net.NetworkCredential userDefined = new System.Net.NetworkCredential("username","password","domain");
XmlDocument xmlDoc = new System.Xml.XmlDocument();
XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "");
XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
XmlNode ndQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");
ndQueryOptions.InnerXml = "";
ndViewFields.InnerXml = "";
WebReference.Lists lists = new WebReference.Lists();
lists.Credentials = userDefined;
XmlNode responseNode = lists.GetListItems("My List Name", null, ndQuery, ndViewFields, null, ndQueryOptions, null);
我收到一个错误:
the request failed with http status 401 unauthorized
我搜索了SO并尝试了我发现的内容:
WebReference.UseDefaultCredentials = true;
和
WebReference.Credentials = System.Net.CredentialCache.DefaultCredentials;
和
<identity impersonate="true" userName="mydomain\username" password="password" />
我试过的一切都得到了同样的错误信息。谁会知道我可能会缺少什么?
如果您的sharepoint使用浏览器身份验证,则需要预先验证
svc.PreAuthenticate = true;
svc.Credentials = new System.Net.NetworkCredential(username, password);
如果它形成了auth,或者除了NTLM以外的任何东西,那么还有更多的混乱 - 尽管到目前为止,我总是回应403