Guardar y eliminar archivos en Sharepoint desde c#

lo primero que necesitamos es hacer una referencia de los servicios que se usan para Sharepoint estos servicios son:

– http://MisitioSharepoint/_vti_bin/copy.asmx  // CopySoap

– http://MisitioSharepoint/_vti_bin/Lists.asmx  // ListsSoap

Así quedaría entonces nuestro método para guardar archivos.

//Modo  de autenticacion del servicio

string ModoAutenticacion= "Digest";

string fileName = "ArchivoPrueba.txt";

string User = "Usuario_Sharepoint";

string PassWord = "Pas123";

byte[] file = null; // la información del archivo que vamos a subir

using (CopySoapClient client = new CopySoapClient())
{

// enviamos las credenciales para autenticarse

NetworkCredential cred = new NetworkCredential(User, PassWord);

if (ModoAutenticacion== "Digest")
{
client.ClientCredentials.HttpDigest.ClientCredential = cred;
client.ClientCredentials.HttpDigest.AllowedImpersonationLevel = 
System.Security.Principal.TokenImpersonationLevel.Impersonation;
}

if (ModoAutenticacion== "Windows")
{
client.ClientCredentials.Windows.ClientCredential = cred;
client.ClientCredentials.Windows.AllowedImpersonationLevel = 
System.Security.Principal.TokenImpersonationLevel.Impersonation;
}

client.Open();
string destinationUrl = "http://MisitioSharepoint/"+ filename;
string[] destinationUrls = { destinationUrl };

FieldInformation i1 = new FieldInformation { DisplayName = "Title",
 InternalName = "Title", Type = FieldType.Text, Value = filename };
FieldInformation[] info = { i1 };
CopyResult[] result;
byte[] data = file;

uint ret = client.CopyIntoItems(filename,destinationUrls,info,data,out result);

if (result != null && result.Length > 0 && result[0].ErrorCode != 0)
{
Inforesult.Errors = result[0].ErrorMessage;
}

client.Close();
}

Como ven es muy fácil crear el archivo en el sitio de sharepoint ahora para eliminar el archivo solo necesitamos esto:

string ModoAutenticacion= "Digest";

string fileName = "ArchivoPrueba.txt";

string User = "Usuario_Sharepoint";

string PassWord = "Pas123";

string LibraryName= "Papeles";

strin url = "http://MisitioSharepoint/";

using (ListsSoapClient client = new ListsSoapClient())
{

NetworkCredential cred = new NetworkCredential(User, PassWord);

if (ModoAutenticacion == "Digest")
{
client.ClientCredentials.HttpDigest.ClientCredential = cred;
client.ClientCredentials.HttpDigest.AllowedImpersonationLevel = 
System.Security.Principal.TokenImpersonationLevel.Impersonation;

}
else if (ModoAutenticacion == "Windows")
{
client.ClientCredentials.Windows.ClientCredential = cred;
client.ClientCredentials.Windows.AllowedImpersonationLevel = 
System.Security.Principal.TokenImpersonationLevel.Impersonation;
}

     string strBatch = "" +
                        "1" +
                        "{0}";

strBatch = string.Format(strBatch, url);
XmlDocument xmlDoc = new System.Xml.XmlDocument();
System.Xml.XmlElement exBatch = xmlDoc.CreateElement("Batch");
exBatch.SetAttribute("OnError", "Continue");
exBatch.InnerXml = strBatch;

var ex = exBatch.ToXElement();

var result = client.UpdateListItems(LibraryName, ex);

}

Por ultimo necesitaremos este metodo para transformar nuestro XML a XElement

  public static class ExtensionMethods
    {
        public static XElement ToXElement(this XmlElement xml)
        {
            XmlDocument doc = new XmlDocument();

            doc.AppendChild(doc.ImportNode(xml, true));

            return XElement.Parse(doc.InnerXml);

        }
    }



Como ven es muy fácil subir y eliminar archivos en sharepoint, alguna duda la pueden comentar o si conocen algun otro método.