2

每当我们的应用程序使用 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 序列化程序中的错误?

我知道这是非常专业的,但任何见解都将不胜感激!

4

1 回答 1

1

您可以尝试使用SGEN来避免它必须在运行时创建 dll 吗?

但是,我很想将其记录为connect上的错误。

请注意,SGEN 方法不会帮助 Web 服务器:

这些生成的程序集不能用于 Web 服务的服务器端。此工具仅适用于 Web 服务客户端和手动序列化场景。

于 2008-11-12T10:59:58.720 回答