2011-02-10 82 views
5

我试图调用SharePoint列表服务来获取列表定义和数据。 SharePoint网站是我的公司,但我无法控制它。这是我所知道的有关服务器的安全性:.NET调用SharePoint Web服务获取HTTP 401未经授权的异常

服务器是HTTPS:登录时// 服务器接受的Windows Active Directory凭据...

我已经试过基本,摘要,CredentialCache,刚刚的NetworkCredential,UnsafeAuthenticatedConnectionSharing ,UseDefaultCredentials,预认证...不知道正确的配置是什么...

我收到的错误是HTTP 401未授权。

   Uri url = new Uri(baseAddress + "/_vti_bin/Lists.asmx", UriKind.Absolute); 
       Lists.Lists client = new Lists.Lists(); 

       // sometimes works 
       CredentialCache cache = new CredentialCache(); 
       cache.Add(url, "NTLM", new NetworkCredential(context.UserName, context.Password, context.Domain)); 
       client.UseDefaultCredentials = false; 
       client.Credentials = CredentialCache.DefaultCredentials; 
       // doesn't work ever 
       //client.Credentials = new NetworkCredential(context.UserName, context.Password, context.Domain); 
       //client.PreAuthenticate = true; 
       client.UnsafeAuthenticatedConnectionSharing = true; 
       client.Url = url.AbsoluteUri; 
       listData = client.GetList(listName).OuterXml; 
+1

当您在浏览器中访问该网站时,请说明您如何正常登录。 – djeeg 2011-02-10 06:47:59

回答

1

这段代码在同一个服务器的SharePoint上本地运行 - 如果是的话那么它可能是local loopback check

如果没有,那么你需要给一些细节acurate的 - 是使用集成的身份验证(如果有的话是通过NTLM或Kerberos)或基本或表单您的网站?

而且 - 如果您尝试使用浏览器(获取WSDL)或Web服务测试工具,如SoapUIone of the many alternatives

1

我的web应用程序是一个混合认证模式(要求使用该Web服务会发生什么NTLM + FBA),下面的代码适用于我。

HttpWebRequest req = WebRequest.CreateHttp("https://example.com/"); 
req.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f"); //login with windows account 
req.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequired; 
req.Credentials = new NetworkCredential(“username", “password", "domain”); 
//this also works 
//req.Credentials = CredentialCache.DefaultNetworkCredentials; 
相关问题