Bonjour à tous,
je viens à vous car je suis actuellement dans une grande impasse. Je travaille sur un addin pour word et j'ai un problème lorsque je veux sauvegarder le document word après avoir fait des modifications sur celui ci avec OPENXML.
à partir d'un certain poids du fichier word, la sauvegarde se passe mal. si j'ai bien compris il passe par un isolatedstorage pour effectuer la sauvegarde (qu'il ne faisait pas avant de dépasser un certain poids +/- égal à 1Mo5)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Dim MainXMLDoc As New XmlDocument() Using WordDoc As WordprocessingDocument = WordprocessingDocument.Open(DocPath, True) .......... Dim mainPart As MainDocumentPart = WordDoc.MainDocumentPart If Not mainPart Is Nothing Then MainXMLDoc.Load(mainPart.GetStream()) EXmlDocument.XMLDoc = Nothing EXmlDocument.XMLDoc = MainXMLDoc EXmlDocument.GetWordDocIds() .............. end if ........ Dim stream As IO.Stream stream = mainPart.GetStream(FileMode.Create, FileAccess.Write) MainXMLDoc.Save(stream) -----> erreur générée
j'ai l'erreur suivante qui est récupérée au niveau de la fonction Save():
Après quelques recherches sur internet, j'ai pu voir quelques solutions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Interception de System.IO.IsolatedStorage.IsolatedStorageException Message=Unable to determine the identity of domain. Source=mscorlib StackTrace: at System.IO.IsolatedStorage.IsolatedStorage._GetAccountingInfo(Evidence evidence, Type evidenceType, IsolatedStorageScope fAssmDomApp, Object& oNormalized) at System.IO.IsolatedStorage.IsolatedStorage.GetAccountingInfo(Evidence evidence, Type evidenceType, IsolatedStorageScope fAssmDomApp, String& typeName, String& instanceName) at System.IO.IsolatedStorage.IsolatedStorage._InitStore(IsolatedStorageScope scope, Evidence domainEv, Type domainEvidenceType, Evidence assemEv, Type assemblyEvidenceType, Evidence appEv, Type appEvidenceType) at System.IO.IsolatedStorage.IsolatedStorage.InitStore(IsolatedStorageScope scope, Type domainEvidenceType, Type assemblyEvidenceType) at System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(IsolatedStorageScope scope, Type domainEvidenceType, Type assemblyEvidenceType) at MS.Internal.IO.Packaging.PackagingUtilities.ReliableIsolatedStorageFileFolder.GetCurrentStore() at MS.Internal.IO.Packaging.PackagingUtilities.ReliableIsolatedStorageFileFolder..ctor() at MS.Internal.IO.Packaging.PackagingUtilities.GetDefaultIsolatedStorageFile() at MS.Internal.IO.Packaging.PackagingUtilities.CreateUserScopedIsolatedStorageFileStreamWithRandomName(Int32 retryCount, String& fileName) at MS.Internal.IO.Packaging.SparseMemoryStream.SwitchModeIfNecessary() at MS.Internal.IO.Packaging.SparseMemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) at MS.Internal.IO.Packaging.CompressEmulationStream.Write(Byte[] buffer, Int32 offset, Int32 count) at MS.Internal.IO.Packaging.CompressStream.Write(Byte[] buffer, Int32 offset, Int32 count) at MS.Internal.IO.Zip.ProgressiveCrcCalculatingStream.Write(Byte[] buffer, Int32 offset, Int32 count) at MS.Internal.IO.Zip.ZipIOModeEnforcingStream.Write(Byte[] buffer, Int32 offset, Int32 count) at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) at System.IO.StreamWriter.Write(Char value) at System.Xml.XmlTextWriter.Indent(Boolean beforeEndElement) at System.Xml.XmlTextWriter.AutoComplete(Token token) at System.Xml.XmlTextWriter.WriteStartElement(String prefix, String localName, String ns) at System.Xml.XmlDOMTextWriter.WriteStartElement(String prefix, String localName, String ns) at System.Xml.XmlElement.WriteStartElement(XmlWriter w) at System.Xml.XmlElement.WriteElementTo(XmlWriter writer, XmlElement e) at System.Xml.XmlElement.WriteTo(XmlWriter w) at System.Xml.XmlDocument.WriteContentTo(XmlWriter xw) at System.Xml.XmlDocument.WriteTo(XmlWriter w) at System.Xml.XmlDocument.Save(Stream outStream) InnerException:
- clickonce
- serveur IIS
- Nouveau domaine
- Registre
Sauf que je ne peux pas utiliser "clickonce", mon application n'a aucun lien avec un serveur IIS, le registre j'aimerais éviter (en dernier recours) donc il me reste la solution d'un nouveau domaine.
J'ai fait quelques modifications à mon code pour "essayer" de créer un nouveau domaine :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Imports DocumentFormat.OpenXml.Packaging Imports System.IO <Serializable()> Public Class ToIsolatedPackageSave Public Sub Save(ByRef mainPart As MainDocumentPart, ByRef xmlDocument As Xml.XmlDocument) Dim stream As IO.Stream stream = mainPart.GetStream(FileMode.Create, FileAccess.Write) xmlDocument.Save(stream) -----> erreur levée (la même) End Sub End ClassJ'aimerais savoir ce que j'ai mal fait ou l'erreur que j'ai commise. Je ne sais plus trop quoi faire pour régler cette erreur, merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Dim stream As Stream Dim isolatedPackageSave As ToIsolatedPackageSave Dim isolatedAppDomain As AppDomain Try Dim isolatedAppDomainSetup As AppDomainSetup = New AppDomainSetup() isolatedAppDomainSetup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory Dim isolatedEvidence As Evidence = New Evidence(AppDomain.CurrentDomain.Evidence) isolatedEvidence.AddAssembly(Reflection.Assembly.GetExecutingAssembly().FullName) isolatedEvidence.AddHost(New Zone(Security.SecurityZone.MyComputer)) isolatedAppDomain = AppDomain.CreateDomain("TrustIsolatedDomain", isolatedEvidence, isolatedAppDomainSetup) isolatedPackageSave = isolatedAppDomain.CreateInstanceAndUnwrap(GetType(ToIsolatedPackageSave).Assembly.FullName, GetType(ToIsolatedPackageSave).FullName) '(IsolatedPackageSave)isolatedAppDomainSetup.CreateInstanceAndUnwrap(GetType(ToIsolatedPackageSave).Assembly.FullName, GetType(ToIsolatedPackageSave).FullName) isolatedPackageSave.Save(mainPart, MainXMLDoc) Catch ex As Exception Finally AppDomain.Unload(isolatedAppDomain) End Try
Ps : je m'excuse d'office si je ne suis pas dans la bonne section et si c'est le cas merci de m'indiquer où je dois placer mon message
Partager