2011-02-10 7 views
5

मिलता है मैं सूची परिभाषा और डेटा प्राप्त करने के लिए एक SharePoint सूचियों सेवा को कॉल करने का प्रयास कर रहा हूं। शेयरपॉइंट साइट मेरी कंपनियों है लेकिन मेरे पास इसका कोई नियंत्रण नहीं है।.NET कॉलिंग SharePoint वेब सेवा को HTTP 401 अनधिकृत अपवाद

सर्वर HTTPS है: लॉगिन करते समय // सर्वर विंडोज सक्रिय निर्देशिका क्रेडेंशियल्स स्वीकार करता

मैं बेसिक, डाइजेस्ट, CredentialCache, बस NetworkCredential, UnsafeAuthenticatedConnectionSharing की कोशिश की है ... यहाँ सब मैं सर्वर के सुरक्षा के बारे में पता है , UseDefaultCredentials, PreAuthenticate ... सुनिश्चित नहीं है कि उचित कॉन्फ़िगरेशन क्या है ...

मुझे प्राप्त त्रुटि 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

+1

मुझे बिल्कुल वही समस्या मिली है। क्या आपको कभी इसके लिए समाधान मिला? – alf

उत्तर

1

इस कोड को SharePoint के रूप में एक ही सर्वर पर स्थानीय स्तर पर चल रहा है - तो फिर उसके शायद local loopback check है।

यदि नहीं तो आपको कुछ सटीक विवरण देने की आवश्यकता है - क्या आपकी साइट एकीकृत प्रमाणीकरण का उपयोग कर रही है (और यदि यह एनटीएलएम या केर्बेरोस के माध्यम से है) या मूल या फॉर्म?

इसके अलावा - क्या होता है अगर आप एक ब्राउज़र का उपयोग कर या एक वेब सेवा परीक्षण उपकरण जैसे SoapUI या one of the many alternatives

1

मेरे वेब अनुप्रयोग एक मिश्रित प्रमाणीकरण मोड है (दावों (WSDL प्राप्त करने के लिए) है कि वेब सेवा का उपयोग करने का प्रयास करें एनटीएलएम + एफबीए), नीचे कोड मेरे लिए काम करता है।

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;