2008-11-12 11 views
2

Nous avons un problème chaque fois que notre application utilise le XML Serializer, lorsque nous sommes connectés en tant qu'utilisateur qui a un nom d'utilisateur contenant caractères japonais..NET XML Serializer avec des caractères japonais dans le nom d'utilisateur

Nous avons préparé un exemple d'application qui teste le sérialiseur lui-même:

   TestClass myClass = new TestClass(); 
       myClass.MyString = "Hello World!"; 

       using (MemoryStream stream = new MemoryStream()) 
       { 
        XmlSerializer serializer = new XmlSerializer(
          typeof (TestClass)); 
        serializer.Serialize(stream, myClass); 
       } 

       MessageBox.Show("Serialization Complete!"); 

Où TestClass est défini comme:

[Serializable] 
    public class TestClass 
    { 
     public string MyString { get; set; } 
    } 

Lorsque Serialize() est appelée, l'exception suivante est signalée :

System.InvalidOperationException: Impossible de générer une classe temporaire (résultat = 1). erreur CS0016: Impossible d'écrire dans le fichier de sortie 'c: \ Users \ ?????? \ AppData \ Local \ Temp \ qas_8hjs.dll' - 'Le nom du répertoire est non valide. '

Notez le' ????? ' où le nom d'utilisateur devrait être affiché.

Nous avons testé cela en utilisant un utilisateur avec un nom basé sur un jeu de caractères anglais, et c'est très bien.

Y a-t-il quelque chose que nous avons négligé de mettre en place (par exemple un environnement ou des paramètres AppDomain?) Ou est-ce un bug dans le sérialiseur XML?

Je sais que c'est assez spécialiste, mais toutes les idées que ce soit seraient appréciées!

Répondre

1

Vous pourriez essayer d'utiliser SGEN pour éviter d'avoir à créer la DLL à l'exécution?

Cependant, je serais tenté d'enregistrer cela comme un bug sur connect.

Notez que l'approche sgen ne va pas aider les serveurs web:

Ces assemblages générés ne peut pas être utilisé sur le côté serveur d'un service Web . Cet outil est uniquement destiné aux clients de service Web et aux scénarios de sérialisation manuels .