2011-02-10 47 views
5

Tôi đang cố gắng gọi dịch vụ Danh sách SharePoint để lấy định nghĩa danh sách và dữ liệu. Trang web SharePoint là công ty của tôi nhưng tôi không có quyền kiểm soát nó. Dưới đây là tất cả tôi biết về bảo mật của máy chủ:Gọi điện thoại .NET Dịch vụ web SharePoint nhận ngoại lệ HTTP 401 trái phép

Server là HTTPS: // Server chấp nhận của Windows thông tin Active Directory khi đăng nhập ...

Tôi đã thử Basic, Digest, CredentialCache, chỉ NetworkCredential, UnsafeAuthenticatedConnectionSharing , UseDefaultCredentials, PreAuthenticate ... không chắc cấu hình đúng là gì ...

Lỗi tôi nhận được là HTTP 401 Trái phép.

   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

Khi bạn truy cập trang web trong trình duyệt, hãy giải thích cách bạn đăng nhập bình thường. – djeeg

+1

Tôi đã có chính xác cùng một vấn đề. Bạn đã bao giờ tìm thấy một giải pháp cho điều này? – alf

Trả lời

1

là mã này chạy cục bộ trên cùng một máy chủ như SharePoint - nếu như vậy thì nó có lẽ là local loopback check.

Nếu không thì bạn cần cung cấp một số chi tiết chính xác - trang web của bạn có sử dụng Xác thực tích hợp (và nếu có thông qua NTLM hoặc Kerberos) hoặc Cơ bản hoặc Biểu mẫu?

Ngoài ra - những gì sẽ xảy ra nếu bạn cố gắng sử dụng dịch vụ web bằng trình duyệt (để có được những WSDL) hoặc một công cụ thử nghiệm dịch vụ web như SoapUI hay one of the many alternatives

1

ứng dụng web của tôi là một chế độ xác thực hỗn hợp (tuyên bố NTLM + FBA), bên dưới mã hoạt động cho tôi.

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; 
Các vấn đề liên quan