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)。error 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 に答える