Travailler sur une application WPF (C# 4.0).Transmettre les informations d'identification à Word Interop pour ouvrir le document dans SharePoint
Le système stocke un certain nombre de documents Word dans SharePoint. Word peut directement modifier ces documents, car SharePoint expose des bibliothèques de documents à Office via WebDAV. Afin de lancer Word pour éditer ces documents, notre application WPF utilise Microsoft.Office.Interop.Word. Découvert (en essayant simplement) que la seule différence entre l'utilisation d'Interop.Word pour ouvrir un document local et un document de SharePoint via WebDAV est que l'objet ref FileName que vous passez est l'URL au lieu d'une chaîne de chemin local .
Tout cela fonctionne tout simplement:
var wordApplication =
new Microsoft.Office.Interop.Word.Application { Visible = true };
object filePath =
"http://PathToSharepoint.com/DocumentLibrary/DocumentName.doc";
object missing = Missing.Value;
object readOnly = false;
object isVisible = true;
Document reportDoc = wordApplication.Documents.Open(
ref filePath,
ref missing,
readOnly,
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref missing,
ref isVisible);
reportDoc.Activate();
Toutefois, si l'utilisateur Windows exécutant l'application n'est pas un utilisateur de domaine avec des autorisations à la bibliothèque de documents, au mieux Word les invite à entrer un nom d'utilisateur et mot de passe, et au pire, il suffit parfois de lancer une exception COMException.
L'utilisateur s'est déjà connecté à notre application WPF avec les mêmes informations d'identification que celles qu'il aurait besoin de fournir, et nous avons le nom d'utilisateur et securePassword en mémoire. Cependant, je ne vois aucun moyen évident de fournir ces informations d'identification à Word.
Quelqu'un at-il la moindre idée de comment je pourrais fournir quelque chose qui ressemble à un NetworkCredential à cela?
C'est une très bonne idée, mais cela ne marchera pas dans ce cas. Le problème est que les postes de travail qui exécutent l'application ne sont pas membres du domaine dans lequel le serveur SharePoint s'exécute. Ce ne sont donc pas des connexions Windows valides sur leurs boîtes. :( – Grank