Archivo

Posts Tagged ‘Sharepoint’

Solución error en Sharepoint: The Copy web service method must be called on the same domain that contains the destination url.

enero 16, 2014 Deja un comentario

Este error se soluciona realizando un mapping de la url que se esta implementando para acceder al servicio por ejemplo la URL que generamos cuando salimos por HTTPS:

En un post anterior Explico como configurarlo:

https://mteheran.wordpress.com/2014/01/05/configurando-https-en-sharepoint/

Este Link también paso a paso como realizar el mapping de Urls en sharepoint:

http://sharepointtidbits.blogspot.com/2010/11/once-you-have-your-sharepoint-site-up.html

 

 

Anuncios

Configurando HTTPS en Sharepoint

Lo primero que debemos hacer es crear el certificado y habilitar los sitios web de Sharepoint para que salgan por el protocolo seguro de HTTPS para ello pueden entrar al siguiente LINK:

http://speakingin.net/2007/04/06/trucos-habilitar-ssl-en-iis-70-usando-certificados-firmados-por-nosotros/

Debes hacer esto en los 2 sitios de sahrepoint en el IIS:

ConfigSharepoint_4

Para este ejemplo usamos la autenticación Windows como se mostró en la imagen anterior debes configurar esta en Sharepoint:

ConfigSharepoint_1

ConfigSharepoint_2

Por ultimo es sumamente importante que coloquemos el Mapping de la Url de Sharepoint cuando sale HTTPS esto permitirá que los servicios funcionen correctamente:

ConfigSharepoint_5

En otro Post esta la configuración para acceder a servicios de Sharepoint que salgan por HTTPS

Url dinámicas al llamar servicios sharepoint

noviembre 4, 2012 Deja un comentario

Cuando hacemos la referencia de los servicios de sharepoint su dirección queda registrada en web config y podemos modificar hay, sin embargo puede que subamos archivos o realicemos cambios a diferentes sitios así que es mejor cambiar la ruta del sitio en el código lo haremos así:

para el servicio de Copy por ejemplo:

CopySoapClient client = new CopySoapClient();
client.Endpoint.Address = new 
System.ServiceModel.EndpointAddress("http://MisitioSharepoint/_vti_bin/Copy.asmx");
client.Endpoint.Contract.Name = "ws.App.SharePointDocuments.CopySoap";
client.Endpoint.Binding.Name = "basicHttpBinding";
client.Endpoint.Contract.ConfigurationName = "CopySoap";//nombre de la referencia como queda en el webconfig


Y este seria para el servicio de ListSoap:

ListsSoapClient client = new ListsSoapClient();
client.Endpoint.Address = new 
System.ServiceModel.EndpointAddress("http://MisitioSharepoint/_vti_bin/Lists.asmx");
client.Endpoint.Contract.Name = "ws.App.SharePointListWebReference.ListsSoap";
client.Endpoint.Binding.Name = "basicHttpBinding";
client.Endpoint.Contract.ConfigurationName = "ListsSoap"; //nombre de la referencia como queda en el webconfig

Guardar y eliminar archivos en Sharepoint desde c#

noviembre 4, 2012 Deja un comentario

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.