최근 SharePoint CSOM에서 작업 중이며 문서 라이브러리 (업로드/다운로드/메타 데이터 업데이트)에서 파일 처리를 다루었습니다. 나는 파일의 상대 URL, 즉 listitem [ "FileRef"] 또는 listitem.ServerRelativeUrl을 얻는 두 가지 방법을 생각해 냈습니다. 이 링크 a link은 셰어 포인트 필드의 내부 이름 목록을 제공합니다. "Server Relative URL"은 "ServerUrl"로 표시됩니다. 그러나 listitem [ "ServerUrl"] 같은 예외에 액세스하려고하면 예외가 throw됩니다.CSOM - FileRef vs ServerUrl vs sp.listitem.ServerRelativeUrl
속성 또는 필드가 초기화되지 않았습니다. 요청되지 않았거나 요청이 실행되지 않았습니다. 명시 적으로 요청해야 할 수도 있습니다.
항목 서버 상대 URL에 액세스하는이 3 가지 방법의 차이점은 무엇입니까 :
Heres는 내 코드 샘플
using (ClientContext clientContext = new ClientContext(siteUrl)) { clientContext.Credentials = new NetworkCredential("abc", "abc", "cde"); List oList = clientContext.Web.Lists.GetByTitle("abcd"); clientContext.Load(oList); clientContext.ExecuteQuery(); CamlQuery camlQuery = new CamlQuery(); ListItemCollectionPosition itemPosition = null; conn.Open(); while (true) { camlQuery = new CamlQuery(); camlQuery.ListItemCollectionPosition = itemPosition; camlQuery.ViewXml = //@"<View Scope='RecursiveAll'> string.Format(@"<View Scope='RecursiveAll'> <Query> <Where> <And> <Eq> <FieldRef Name='FSObjType' /> <Value Type='Integer'>0</Value> </Eq> <In> <FieldRef Name='FileLeafRef' /> <Values> {0} </Values> </In> </And> </Where> </Query> <FieldRef Name='FileLeafRef' /><FieldRef Name='FileRef'><FieldRef Name='ServerUrl'> <RowLimit>100</RowLimit> </View>", CAMLcoll); ListItemCollection listItems = oList.GetItems(camlQuery); clientContext.Load(listItems); clientContext.ExecuteQuery(); itemPosition = listItems.ListItemCollectionPosition; foreach (ListItem listItem in listItems) { try { clientContext.Load(listItem, eachitem => eachitem.File.ServerRelativeUrl); clientContext.ExecuteQuery(); string url = listItem["FileRef"].ToString(); //This works url = listItem.ServerRelativeUrl.ToString(); //This works url = listItem["ServerUrl"].ToString(); //This throws exception!! } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } if (itemPosition == null) break; //Debug.Print(itemPosition.PagingInfo); }
나는 몇 가지 질문이 있습니까?
왜 url = listItem [ "ServerUrl"] ToString()가 실패합니까?
나는 CSOM 프로그래밍에 익숙하지 않으므로 제 실례지만 실례합니다.
감사
만 File 클래스와 모든ServerRelativeUrl
작품의 아마르
감사합니다 Gautam. 예, 맞습니다. ServerRelativeUrl은 파일 속성이며 항목 속성을 나열하지 않습니다. 게시물에 대한 코드를 수정하는 동안 그것을 놓쳤습니다. – Amar