我有一个简单的sharepoint获取列表方法(SharePointList是对list.asmx的webrefrence)。
/// <summary>
/// Returns a list of sharepoint lists
/// </summary>
/// <returns>A list of sharepoint lists</returns>
private string GetSharePointLists()
{
StringBuilder stringBuilder = new StringBuilder();
try
{
SharePointList.ListsSoapClient proxy = new SharePointList.ListsSoapClient();
proxy.ClientCredentials.Windows.ClientCredential = new NetworkCredential();
XmlElement lists = proxy.GetListCollection();
var q = from c in lists.ChildNodes.Cast<XmlNode>()
select new
{
DefaultViewUrl = c.Attributes["DefaultViewUrl"].Value,
Title = c.Attributes["Title"].Value
};
foreach (var x in q)
{
stringBuilder.AppendLine(string.Format("{0} http://REMOVED/{1}", x.Title, x.DefaultViewUrl.Replace(" ", "%20")));
}
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
return stringBuilder.ToString();
}
它在我的开发盒上工作正常。它曾经在我的测试机器上正常工作。重建测试机器后,我总是在proxy.GetListCollection() -
上出现此错误HTTP请求未经授权使用客户端身份验证方案“Ntlm”。从服务器收到的身份验证标头是“NTLM”。
任何人都知道这里发生了什么以及如何解决它?
答案 0 :(得分:1)
事实证明401访问被拒绝的消息只不过它似乎。 webservice适用于所有其他计算机,因为他们都拥有共享Web服务的权限。
新重建的服务器连接的用户没有。我添加了服务器运行的用户以及具有相应权限的“人员和组”,并且列表运行正常。