2010-11-10 14 views
0

J'ai écrit le code suivant, mais la ligne MessageBox.Show(sr.ReadToEnd) n'affiche rien? Est-ce que quelqu'un sait ce que je fais mal? Je souhaite envoyer un objet d'exception à un service Web pour la journalisation à distance: existe-t-il une meilleure méthode (quantité minimale de code, donc je ne souhaite pas créer d'objet de transfert spécial que vous copiez l'exception objct à et je voudrais un peu plus souple que .toString)Comment obtenir le flux de mémoire pour afficher mon message de formateur de savon

Dim sf As New System.Runtime.Serialization.Formatters.Soap.SoapFormatter 

    Try 
     Integer.Parse("A") 

    Catch ex As Exception 

     Using ms As New IO.MemoryStream() 
      sf.Serialize(ms, ex) 

      Using sr As New IO.StreamReader(ms) 
       MessageBox.Show(sr.ReadToEnd) 
      End Using 

     End Using 
    End Try 

Répondre

1

vous devez réinitialiser la position:

sf.Serialize(ms, ex) 
    ms.Position = 0 
    using ... 
+0

C'est fâcheusement simple et logique ... pourriez-vous suggérer une autre façon de faire ce? Je semble me souvenir que le flux de mémoire soit relativement cher? –

+1

Je pense que cela (le MS) est sur le chemin le plus efficace. –

+0

Que diriez-vous si je ne veux pas toutes les informations sur le savon .. c'est-à-dire que le xml fera l'affaire? –