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.

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
à 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)
j'ai l'erreur suivante qui est récupérée au niveau de la fonction Save():

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:
Après quelques recherches sur internet, j'ai pu voir quelques solutions :
  • 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 Class
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
J'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.

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