У нас возникает проблема всякий раз, когда наше приложение использует XML Сериализатор, когда мы вошли в систему как пользователь с именем пользователя, содержащим Японские иероглифы.
Мы подготовили пример приложения, которое тестирует сериализатор самостоятельно:
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?
Я знаю, что это довольно специалист, но мы будем благодарны за любые идеи!





Вы можете попробовать использовать SGEN, чтобы избежать создания dll во время выполнения?
Однако у меня возникнет соблазн зарегистрировать это как ошибку на соединять.
Обратите внимание, что подход SGEN не поможет веб-серверам:
These generated assemblies cannot be used on the server side of a Web service. This tool is only for Web service clients and manual serialization scenarios.