Estoy tratando de cargar los archivos de documento en una biblioteca de documentos en SharePoint mediante la CopyIntoItems método de SharePoint Copia de un servicio web.

El siguiente código se ejecuta y devuelve 0 (éxito). También, el CopyResult matriz[] devuelve el valor 1 con un «Éxito» el resultado. Sin embargo, no puedo encontrar el documento en cualquier lugar de la biblioteca.

Tengo dos preguntas:

  1. Nadie puede ver nada malo con mi código o sugerir cambios?
  2. Puede alguien sugerir cómo podría depurar esta en el lado del servidor. No tengo una tremenda cantidad de experiencia con SharePoint. Si puedo realizar un seguimiento de lo que está pasando a través de la tala de árboles o algún otro método en el lado del servidor se puede ayudar a averiguar lo que está pasando.

Ejemplo De Código:

string[] destinationUrls = { Uri.EscapeDataString("https://someaddress.com/Reports/Temp") };

SPCopyWebService.FieldInformation i1 = new SPCopyWebService.FieldInformation { DisplayName = "Name", InternalName = "Name", Type = SPListTransferSpike1.SPCopyWebService.FieldType.Text, Value = "Test1Name" };
SPCopyWebService.FieldInformation i2 = new SPCopyWebService.FieldInformation { DisplayName = "Title", InternalName = "Title", Type = SPListTransferSpike1.SPCopyWebService.FieldType.Text, Value = "Test1Title" };

SPCopyWebService.FieldInformation[] info = { i1, i2 };

SPCopyWebService.CopyResult[] result;

byte[] data = File.ReadAllBytes("C:\SomePath\Test1Data.txt");

uint ret = SPCopyNew.CopyIntoItems("", destinationUrls, info, data, out result);

Edición que tengo cosas de trabajo:

Tengo mi código de trabajo mediante la adición de «http://null» a la SourceUrl campo. Nat la respuesta sería probablemente el trabajo por ese motivo. Aquí está la línea que he cambiado para que funcione.

//Change
uint ret = SPCopyNew.CopyIntoItems("http://null", destinationUrls, info, data, out result);
No debe ser el uso de Uri.EscapeUriString en lugar de Uri.EscapeDataString?
Uri.EscapeUriString funcionado mejor para mí.

OriginalEl autor Matt Spradley | 2009-06-12

3 Comentarios

  1. 6

    Creo que el problema puede estar en el intento de establecer la propiedad «Name», mediante el webservice. He tenido algunos no logran hacerlo.
    Dado el «Nombre» es el nombre del documento, puede que tenga algo de éxito con

        string targetDocName = "Test1Name.txt";
        string destinationUrl = Uri.EscapeDataString("https://someaddress.com/Reports/Temp/" + targetDocName);
        string[] destinationUrls = { destinationUrl };
    
        SPCopyWebService.FieldInformation i1 = new SPCopyWebService.FieldInformation { DisplayName = "Title", InternalName = "Title", Type = SPListTransferSpike1.SPCopyWebService.FieldType.Text, Value = "Test1Title" };
        SPCopyWebService.FieldInformation[] info = { i1};
        SPCopyWebService.CopyResult[] result;
        byte[] data = File.ReadAllBytes("C:\SomePath\Test1Data.txt");
        uint ret = SPCopyNew.CopyIntoItems(destinationUrl, destinationUrls, info, data, out result);

    Nota: he utilizado el «destino» como «fuente» de la propiedad. No sé muy bien por qué, pero se hace el truco.

    Poner en una fuente Url hizo el truco. No sé por qué no hay información de error se devuelve cuando la dirección Url de origen no está incluido.

    OriginalEl autor Nat

  2. 1

    Yo no entendía muy bien lo que estás atando a hacer, pero si usted está tratando de subir un archivo de un directorio local en una biblioteca de sharepoint, sugiero que se cree un webclient y uso uploadata:

    Ejemplo (VB.NET):

    dim webclient as Webclient 
    webClient.UploadData("http://srvasddress/library/filenameexample.doc", "PUT", filebytes)

    A continuación, sólo tiene que comprobar en el archivo utilizando el servicio web de listas, algo así como:

    listService.CheckInFile("http://srvasddress/library/filenameexample.doc", "description", "1")

    Espero que se de ayuda.

    EDIT: no se olvide de establecer credenciales para el cliente web, etc.

    EDIT 2: Actualización de metada campos de usar este:

    listService.UpdateListItems("Name of the Library, batchquery)

    Usted puede encontrar información sobre la construcción de lote consulta aquí: enlace

    +1 – Que es un buen enfoque. Sin embargo, quiero establecer los metadatos asociados con el archivo al mismo tiempo.
    La Metada de datos puede ser actualizada por el código que acaba de agregar para arriba.

    OriginalEl autor v3ga

  3. 1

    La sourceurl se utiliza en Sharepoint. Se trata de un enlace de vuelta a la «Documento de Origen.» Cuando en la biblioteca de documentos, coloque el cursor sobre el elemento, a la derecha, aparece un triángulo que apunta hacia abajo. Pulsando sobre ella, se abrirá un menú. Haga clic en «Ver» Propiedades de la Opción. En esta página podrás ver la siguiente «Este elemento es una copia de http://null ( Ir A la Fuente del Artículo | Desvincular )»

    Porque estamos utilizando la función de Copia de Sharepoint es la de mantener la pista de la «elemento de Origen» como parte de la Gestión de Documentos característica.

    OriginalEl autor Lewis

Dejar respuesta

Please enter your comment!
Please enter your name here