REST

2013-04-11 6 views
6

का उपयोग कर SharePoint 2013 में फ़ोल्डर का नाम नहीं बदला जा सकता है मुझे SharePoint 2013 द्वारा प्रदान की गई आरईएसटी एपीआई का उपयोग कर दस्तावेज़ लाइब्रेरी के अंदर एक फ़ोल्डर का नाम बदलने में समस्या हो रही है। यहां कोड है जिसका मैं नीचे उपयोग कर रहा हूं।REST

POST http://2013.blah.com/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents/Test') HTTP/1.1 
X-HTTP-Method: MERGE 
IF-MATCH: * 
X-RequestDigest: 0xA7C057B3AECE805B7313909570F64B8EACD7A677014B8EBE7F75CC5A7C081F87973D94E7CC22346964ECAB1FE3C6B326DA3B67DF7A646FE6F47E9B1E686C3985,11 Apr 2013 15:13:05 -0000 
Accept: application/json; odata=verbose 
Content-Type: application/json; odata=verbose 
Host: 2013.skysync.com 
Content-Length: 50 
Expect: 100-continue 

{"__metadata":{"type":"SP.Folder"},"Name":"Test2"} 

और फिर प्रतिक्रिया:

HTTP/1.1 204 No Content 
Cache-Control: private, max-age=0 
Expires: Wed, 27 Mar 2013 15:13:15 GMT 
Last-Modified: Thu, 11 Apr 2013 15:13:15 GMT 
Server: Microsoft-IIS/8.0 
X-SharePointHealthScore: 0 
SPClientServiceRequestDuration: 15 
X-AspNet-Version: 4.0.30319 
SPRequestGuid: 53bd109c-43bb-2064-4a1b-82298b670ece 
request-id: 53bd109c-43bb-2064-4a1b-82298b670ece 
X-RequestDigest: 0x9CDB4F31CC5F3877C4383657C12BEC6CFF10FC28AB6A0BB2D9D38B4279187CBD1450359BDFF07F0E63FF550BFF96C46E0476FB895CDA104348AC066D86246BC6,11 Apr 2013 15:13:15 -0000 
X-FRAME-OPTIONS: SAMEORIGIN 
X-Powered-By: ASP.NET 
MicrosoftSharePointTeamServices: 15.0.0.4420 
X-Content-Type-Options: nosniff 
X-MS-InvokeApp: 1; RequireReadOnly 
Date: Thu, 11 Apr 2013 15:13:15 GMT 

सब कुछ अच्छा लग रहा है जब तक मैं SharePoint के लिए वापस जाओ और परीक्षण फ़ोल्डर अभी भी वही है

string digest = String.Empty; 
using (var response = await connector.HttpClient.PostAsync("_api/contextinfo", null, token)) 
{ 
    response.EnsureSuccessStatusCode(); 
    var obj = await response.ReadObject("d"); 
    digest = obj["GetContextWebInformation"].Value<string>("FormDigestValue"); 
} 

using (var request = new HttpRequestMessage(HttpMethod.Post, String.Format("/_api/Web/GetFolderByServerRelativeUrl('{0}')", operation.Path.FullName))) 
{ 
    request.Headers.Add("X-HTTP-Method", "MERGE"); 
    request.Headers.Add("IF-MATCH", "*"); 
    request.Headers.Add("X-RequestDigest", digest); 

    //{ '__metadata': { 'type': 'SP.Folder' }, 'Name': 'New name' } 
    dynamic obj = new JObject(); 
    obj.__metadata = new JObject(); 
    obj.__metadata.type = "SP.Folder"; 
    obj.Name = operation.DesiredName; 

    request.Content = new ODataJObjectContent(obj); 

    using (var response = await connector.HttpClient.SendAsync(request, token)) 
    { 
     response.EnsureSuccessStatusCode(); 
     await response.ReadText(); 
    } 
} 

फ़िडलर यहाँ अनुरोध है नाम। मैं here से दिशानिर्देशों का पालन कर रहा हूं और मैंने अन्य बहुत ही समान उदाहरण देखे हैं। मैं बिना किसी समस्या के इंटरफ़ेस के माध्यम से इसका नाम बदल सकता हूं।

किसी भी मदद के लिए अग्रिम धन्यवाद!

+0

अनुमति अनुमति होने के लिए जा रहे हैं। – Jordan

+1

@ जोर्डन मैं फ़ोल्डर को हटाने में सक्षम हूं हालांकि, मुझे पता है कि यह संभव है लेकिन मुझे लगता है कि यह अनुमति अनुमति थी या नहीं, तो मैं इसे हटाने में सक्षम नहीं हूं। – TroyC

+0

एक और टिप्पणी जोड़ना..मैं पुरानी शेयरपॉइंट एएसएमएक्स सेवाओं का उपयोग कर नाम बदल सकता हूं, जो मैं अब कर रहा हूं। उपर्युक्त विधि का उपयोग करके सूची कार्यों का नाम बदलने में काफी मजेदार है। – TroyC

उत्तर

0

अपनी मेनिफेस्ट फ़ाइल में सूची जोड़ने का प्रयास करें। यह एक अनुमति समस्या की तरह प्रतीत होता है, और जब आपको किसी एप्लिकेशन पर "भरोसा" करना होता है तो उस सूची का चयन करें जिसके साथ आप काम करना चाहते हैं।

+1

बहुत गलत - यह किसी भी तरफ से लागू किया जा सकता है, जिसमें क्लाइंट साइड (जैसे मेरा मामला) शामिल है।भाषा कुछ भी हो सकती है और आपके पास 'प्रकट' भी नहीं हो सकता है। जहां तक ​​अनुमतियां हैं, लेखक ने पुष्टि की कि वह फ़ोल्डरों को हटा सकते हैं और यहां वही - मैं इस एपीआई का उपयोग करके नाम बदल नहीं सकता हूं। – zaitsman

0

निम्नलिखित उदाहरण दर्शाता SharePoint 2013 के बाकी सेवा के माध्यम से फ़ोल्डर का नाम बदलने के लिए कैसे

परिदृश्य: 2015Documents पुस्तकालय

using (var client = new SPHttpClient(webUri, userName, password)) 
{ 
    RenameFolder(client, webUri.ToString(),"Documents/Archive","2015"); 
} 

जहां

private static void RenameFolder(SPHttpClient client, string webUrl,string folderUrl,string folderName) 
    { 
     var folderItemUrl = webUrl + "/_api/web/GetFolderByServerRelativeUrl('" + folderUrl + "')/ListItemAllFields"; 
     var data = client.ExecuteJson(folderItemUrl); 

     var itemPayload = new { 
      __metadata = new { type = data["d"]["__metadata"]["type"] }, 
      Title = folderName, 
      FileLeafRef = folderName, 

     }; 
     var itemUrl = data["d"]["__metadata"]["uri"]; 
     var headers = new Dictionary<string, string>(); 
     headers["IF-MATCH"] = "*"; 
     headers["X-HTTP-Method"] = "MERGE"; 
     client.ExecuteJson((string)itemUrl, HttpMethod.Post, headers, itemPayload); 
    } 
में स्थित करने के लिए Archive फ़ोल्डर का नाम बदलें

नोट:

  • SPHttpClient class - HttpClient से विरासत और इस तरह के अनुरोध को पचाने
  • SPHttpClientHandler class हो रही के रूप में कुछ अतिरिक्त SharePoint विशिष्ट functionaly प्रदान करता है - छुपाता सभी शेयरपॉइंट ऑनलाइन प्रमाणीकरण से संबंधित जटिलताओं