最近私はSharePoint CSOMで作業しており、ドキュメントライブラリ(アップロード/ダウンロード/メタデータの更新)でのファイル処理を扱っています。私は、サーバーの相対URL、すなわちlistitem ["FileRef"]またはlistitem.ServerRelativeUrlを取得するためのいくつかの方法に遭遇しました。このリンクa linkは、共有ポイントフィールドの内部名のリストを提供します。 「Server Relative URL」は「ServerUrl」と表示されています。しかし、私がlistitem ["ServerUrl"]のようなものにアクセスしようとすると例外がスローされます:CSOM - FileRef vs ServerUrl vs sp.listitem.ServerRelativeUrl
プロパティまたはフィールドが初期化されていません。要求されていないか、要求が実行されていません。明示的に要求される必要があるかもしれません。
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にアクセスして、これらの3つの方法の違いは何ですか?
なぜですかurl = listItem ["ServerUrl"] ToString()は失敗しますか?
私はCSOMプログラミングにはかなり新しいので、私の無知のために私を失礼です。
おかげ
アマール
ありがとうGautam。 はい、あなたは正しいです、ServerRelativeUrlはファイルプロパティであり、アイテムプロパティをリストしません。私はポストのコードを修正しようとしている間にそれを逃した。 – Amar