Contamos con tu ayuda para difundir nuestros escritos sobre las ciencias informáticas.
Solución:
El siguiente método de extensión demuestra cómo determinar si el archivo existe o no:
using Microsoft.SharePoint.Client;
namespace SharePoint.Client.Extensions
public static class WebExtensions
public static bool TryGetFileByServerRelativeUrl(this Web web, string serverRelativeUrl, out File file)
var ctx = web.Context;
try
file = web.GetFileByServerRelativeUrl(serverRelativeUrl);
ctx.Load(file);
ctx.ExecuteQuery();
return true;
catch (ServerException ex)
if (ex.ServerErrorTypeName == "System.IO.FileNotFoundException")
file = null;
return false;
throw;
Puntos clave:
Si el archivo no existe, se encuentra la excepción Microsoft.SharePoint.Client.ServerException, este enfoque demuestra una de confianza forma de determinar si el archivo existe o no
Uso
using(var ctx = GetContext(webUri, userName, password))
File file;
if (ctx.Web.TryGetFileByServerRelativeUrl( "/documents/SharePoint User Guide.docx", out file))
//...
He visto muchas referencias a file.Exists no funciona en CSOM, pero el problema generalmente se produce al intentar hacer context.Load (file). Si el archivo no existe, no puede cargar el archivo, por lo que la prueba misma rompe el resultado.
Sin embargo, el siguiente código funciona.
var file = web.GetFileByServerRelativeUrl(serverRelativeUrl);
web.Context.Load(file, f => f => f.Exists); // Only load the Exists property
web.Context.ExecuteQuery();
return file.Exists;
La carpeta existe:
FolderCollection folders = list.RootFolder.Folders;
ctx.Load(folders, fl => fl.Include(ct => ct.Name)
.Where(ct => ct.Name == "MyFolder"));
ctx.ExecuteQuery();
return folders.Any();
Reseñas y valoraciones del tutorial
Recuerda que puedes comunicar esta crónica si lograste el éxito.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)