2016-12-03 6 views
0

Impossible de trouver un bon exemple d'implémentation WebDAV utilisant l'assembly WinSCP .NET.Exemple WinSCP .NET WebDAV

Plus précisément, je cherche du code qui va pousser un fichier vers un serveur WebDAV.

Quelqu'un pourrait-il fournir un exemple de code C# pour m'aider à démarrer?

Répondre

0

Voici mon exemple d'implémentation de fichier WinDSPP .NET WebDAV avec laquelle j'ai fini.

Ce n'est pas joli mais ça semble faire l'affaire.

Espérons que cela sauve quelqu'un d'autre des heures frustrantes.

Remarque: WebDavUploadSettings.Default.XXXX est la façon dont j'accède à mon fichier de paramètres où toutes mes informations de connexion sont stockées.

public static void SendFileWebDav(string FileToSend) 
{ 
    if (!DoesFileExist(FileToSend)) 
    { 
     throw new Exception(string.Format("Cannot Find File {0}", FileToSend)); 
    } 
    SessionOptions sessionOptions = new SessionOptions(); 
    sessionOptions.UserName = WebDavUploadSettings.Default.Username; 
    sessionOptions.Password = WebDavUploadSettings.Default.Password; 
    if (string.IsNullOrWhiteSpace(WebDavUploadSettings.Default.FolderPathToPushTo)) //WINSCP will throw an error if root directory doesn't start with/
    { 
     //Haven't tested this. 
     sessionOptions.WebdavRoot = "/"; 
    } 
    else 
    { 
     sessionOptions.WebdavRoot = WebDavUploadSettings.Default.FolderPathToPushTo.ToString(); //Added .ToString() here because I was getting 404 error other wise? Maybe because is was not reading in the setting correctly. 
    } 
    //Make sure you define this as a URL without protocal. (Leave off Https:// and Http://) 
    sessionOptions.HostName = WebDavUploadSettings.Default.Website; 
    sessionOptions.Protocol = Protocol.Webdav; 
    Session WebDavSession = new Session(); 

    try 
    { 
     WebDavSession.Open(sessionOptions); 
     TransferOptions TransferOptions = new TransferOptions(); 
     TransferOptions.TransferMode = TransferMode.Automatic; 
     TransferOperationResult transferResult; 
     transferResult = WebDavSession.PutFiles(FileToSend,Path.GetFileName(FileToSend), false, TransferOptions); 
     transferResult.Check(); 
    } 
    catch (Exception e) 
    { 
     throw e; 
    } 
    finally 
    { 
     WebDavSession.Close(); 
    } 
}