J'ai besoin de permettre aux utilisateurs d'ouvrir un document Word à partir d'une page Web et de le modifier localement en utilisant l'application MS Word. enfin, ils devraient pouvoir (poster) sauvegarder le document modifié sur le serveur.Est-il possible de partager des cookies de session ASP.NET entre IE et le module complémentaire
Pour l'exigence ci-dessus j'ai choisi ASP.NET, C#, .NET 3.5, IIS, IE6 (ou au-dessus) et MS Office 2007 (devrait être dans toutes les stations de travail).
J'ai développé une application web ASP.NET, qui a trois pages aspx Login.aspx, DocList.aspx et SaveDoc.aspx.
- Login.aspx - Authentification/Autorisation. (Type d'authentification: Formulaires)
- DocList.aspx - Pour afficher/télécharger des documents Word.
- SaveDoc.aspx - Pour enregistrer le document Word modifié dans le serveur.
Et aussi j'ai développé un complément de ruban de mot partagé, qui aide l'utilisateur à enregistrer le document modifié sur le serveur en cliquant sur le bouton "Publier" dans le complément. client Web a été utilisé pour télécharger le document modifié. Pour enregistrer le document modifié sur le serveur, ce complément doit être installé sur tous les postes de travail.
string modifiedWordXml = applicationObject.ActiveDocument.WordOpenXML;
WebClient client = new WebClient();
string serverAddress = "http://localhost:51507/DOCMGR/SaveDoc.aspx";
byte[] byteArray = Encoding.UTF8.GetBytes(modifiedWordXml);
byte[] responceArray = client.UploadData(serverAddress, byteArray);
string res = Encoding.UTF8.GetString(responceArray);
MessageBox.Show(res,"Document Manager");
page Web affiche la liste des liens vers des documents de mot, après avoir cliqué sur le lien du document Word est ouvert dans une application séparée MS Word dans le client. Là, l'utilisateur peut modifier le document et en cliquant sur "Puplish" bouton sur le ruban de complément, document modifié avec succès enregistré sur le serveur.
Ma condition est satisfaite et tout fonctionne correctement lorsque l'authentification est désactivée.
Si j'ai activé l'authentification, le complément n'a pas pu télécharger le document modifié sur le serveur car il n'est pas authentifié et n'a pas pu partager les cookies d'authentification avec l'IE.
Y a-t-il une solution de contournement/une solution pour satisfaire à mes exigences? Votre aide sera grandement appréciée.
Nous vous remercions de votre aide. J'ai changé mon code pour utiliser HttpWebRequest au lieu de WebClient et ajouter un cookie de session ASPNET à un objet CookieContainer sur requête. Toujours pas de chance. Pour votre référence, je joins le code ci-dessous. S'il vous plaît laissez-moi savoir si quelque chose me manque. HttpWebRequest request = (HttpWebRequest) WebRequest.Create ("http: //SERVERIP/DOCMGR/SaveDoc.aspx"); Uri uri = new Uri ("http: // SERVERIP"); request.CookieContainer = GetUriCookieContainer (uri); request.Method = "POST"; REMARQUE: HTTP: // EST DÉTRUIT DANS CE POSTE – afin
J'ai lu un article msdn indiquant que "InternetGetCookie ne renvoie pas les cookies que le serveur a marqués comme non-scriptable avec l'attribut" HttpOnly "dans l'en-tête Set-Cookie." MSDN URL: http://msdn.microsoft.com/fr-fr/library/aa384710%28VS.85%29.aspx Étant donné que nous utilisons l'authentification par formulaire et que les cookies ont l'attribut "HttpOnly" par défaut, InternetGetCookie ne renvoie pas les cookies. Y at-il une solution de contournement/solution? Merci d'avance. – afin
Ceci est une question stupide mais pouvez-vous simplement créer un cookie sur votre site que vous partagez pour l'authentification lorsque l'utilisateur est authentifié qui n'est pas marqué HttpOnly? Puis, au lieu de rechercher le cookie de session .NET, vous pouvez rechercher le vôtre qui a été créé après l'authentification de l'utilisateur? –