实际上我正在尝试从Windows应用程序添加共享点列表中的项目。当我添加Web引用并且能够获得为Lists.asmx列出的所有产品时,一切都很顺利。 当我执行我的程序并尝试调用listServiceObj.GetListAndview(“Customers”,“”); 它给了我错误“请求失败,HTTP状态401:未经授权”。请注意,此时我的凭据和服务参考的URL是;
SpListService.Lists spListService = new SpListService.Lists();
spListService.Credentials = System.Net.CredentialCache.DefaultCredentials;
spListService.Url = "http://localhost/_vti_bin/Lists.asmx";
XmlNode customerListView = spListService.GetListAndView("Customers", "");
然后我将上面的代码更改为;
SpListService.Lists spListService = new SpListService.Lists();
spListService.Credentials = System.Net.CredentialCache.DefaultCredentials;
spListService.Url = "http://<PC-Name>/sites/Home/_vti_bin/Lists.asmx";
XmlNode customerListView = spListService.GetListAndView("Customers", "");
然后我收到了以下错误;
“抛出了'Microsoft.SharePoint.SoapServer.SoapServerException'类型的异常。”
我已在完全控制组中创建了登录用户。也是管理员组的成员..但同样的结果...... 另请注意,当尝试访问“http:// localhost /”或“http:///”时,它会给我SP2010的访问被拒绝页面....相反,我必须写“http:/// sites / Home /SitePages/Home.aspx“打开我的团队网站集
我真的坚持到这个......我真的很高兴有一些解决我这个问题的方法......先谢谢 MJay
答案 0 :(得分:0)
当我实现第一个SharePoint列表Web服务客户端时,我遇到了类似的问题。原因是默认情况下自动生成的客户端类实际上将其自身引入为Mozilla Web浏览器! SharePoint服务器不允许对浏览器进行基本身份验证,因此客户端实际上已重定向到防火墙登录页面。
我建议您从Lists类继承另一个类并执行以下操作:
请参阅下面的示例。
public class CustomizedLists : Lists
{
public CustomizedLists() : base()
{
this.UserAgent = "Some SharePoint client";
this.PreAuthenticate = true;
System.Net.ICredentials creds = new System.Net.NetworkCredential("user", "pwd");
this.Credentials = creds.GetCredential(uri, "Basic");
}
}