每当我们的应用程序使用 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 序列化程序中的错误?
我知道这是非常专业的,但任何见解都将不胜感激!