Tengo una maquina de desarrollo con xp y visual studio 2010. Obviamente no tengo instalacion local de sharepoint.
Mi sharepoint esta en un servidor, asi que para acceder a el desde aplicaciones c# solo puedo utilizar los webservices.
Para manipular lar listas utilizo el webservice List y para copiar archivos desde mi "File system" a mi sitio sharepoint utilizo el webservice "Copy".
Añado las referencias de servicio Web, las veo, puedo crearlas, asigno las credenciales con el método "basic" o "Negotiate" .... pero el método CopyObject.CopyIntoItems me devuelve "error 401 - no autorizado".
El código es consecuencia de mucho "trasteo, prueba y error"", asi que no le hagais mucho caso, pero basicamente lo que hago es Conectarme al servicio Copy, identificarme con Credentials y enviar un fichero del mi File system local
El usuario y contraseña son los mismos con los que accedo via sharepoint designer y son del propietario del sitio (que soy yo).
Alguien puede darme alguna pista ?.
Muchas gracias
Código del método
=================================================================================
public
static
void
EnviaFichero(string
Biblioteca, string
NombreDelFichero)
{
ReferenciaWebCopy.
CopyResult[]
result = { new
ReferenciaWebCopy.CopyResult()};
try
{
byte[]
myBinary = File.ReadAllBytes(NombreDelFichero);
string
UrlFuente = NombreDelFichero;
string
UrlDestino = @"MiURL"
+ Biblioteca + @"/"
+ NombreDelFichero;
string[]
UrlsDestino = { UrlDestino };
System.Net.
CredentialCache
cache = new
System.Net.CredentialCache();
cache.Add(
new
Uri(UrlDestino),
"basic",
new
System.Net.NetworkCredential( "MiUsuario",
"MiPassword" , "MiDominio"));
var
CopyObject = new
Copy
{ Url = "MiUrl/_vti_bin/copy.asmx"
};
CopyObject.Credentials = cache;
var
resultTest = new
ReferenciaWebCopy.CopyResult();
result[0] = resultTest;
CopyObject.CopyIntoItems(UrlFuente, UrlsDestino ,
null,
myBinary, out
result);
}
catch
(Exception
e)
{
MessageBox.Show(e.Message);
if
(result[0].ErrorMessage == null)
{
MessageBox.Show("Copia
completada.\r\n" +
"Destino: "
+ result[0].DestinationUrl + "\r\nError:
" + result[0].ErrorMessage +
"\r\n Codigo: "
+ result[0].ErrorCode);
}
else
{
MessageBox.Show("Copia
fallida.\r\nError: " + result[0].ErrorMessage +
"\r\n Codigo: "
+ result[0].ErrorCode);
}
}
}