.NET XML Serializer с японскими символами в имени пользователя - PullRequest
2 голосов
/ 12 ноября 2008

У нас возникают проблемы, когда наше приложение использует XML Serializer, когда мы вошли как пользователь, который имеет имя пользователя, содержащее Японские иероглифы.

Мы подготовили пример приложения, которое самостоятельно тестирует сериализатор:

              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!");

Где TestClass определяется как:

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

Когда вызывается Serialize (), сообщается следующее исключение:

System.InvalidOperationException: невозможно создать временный класс (Результат = 1). ошибка CS0016: не удалось записать в выходной файл 'c: \ Users \ ?????? \ AppData \ Local \ Temp \ qas_8hjs.dll' - 'Имя каталога недействительным. «

Обратите внимание на «?????» где имя пользователя должно отображаться.

Мы проверили это, используя пользователя с английским именем на основе набора символов, и это нормально.

Есть что-то, что мы забыли настроить (например, любая среда или настройки AppDomain?) или это ошибка в XML-сериализаторе?

Я знаю, что это довольно специалист, но любые идеи будут оценены!

1 Ответ

1 голос
/ 12 ноября 2008

Вы можете попробовать использовать SGEN , чтобы избежать необходимости создавать dll во время выполнения?

Тем не менее, я хотел бы записать это как ошибку на connect .

Обратите внимание, что подход SGEN не поможет веб-серверам:

Эти сгенерированные сборки не могут быть используется на стороне сервера в Интернете оказание услуг. Этот инструмент только для веб обслуживание клиентов и руководство сценарии сериализации.

...