0

これはかなり奇妙です。整形式の XML である構成ファイルがあります。ファイルからストリームを作成し、非常に典型的なコードと思われるものを使用してシリアル化します。

TextWriter tw = new StreamWriter(tempFile);

次のように作成されたシリアライザーを使用します。

XmlSerializer ConfigSettingSerializer = new XmlSerializer(typeof(ConfigSettings));

ConfigSettings は、文字列変数と値を含む単なるコンテナー クラスです。

次に、シリアル化されたストリームを取得し、ConfigurationManager クラスと AppSettings を使用して構成として隠します。次に、シリアル化されたデータを appSettings から取得し、ストリームを元のクラスに変換しようとします。

string configXml = ConfigurationManager.AppSettings[Id];
using (StringReader reader = new StringReader(configXml))
        {                
            retVal = (ConfigSettings)MVHelper.ConfigSettingSerializer.Deserialize(reader);
        }       

Debug から Release に切り替えるまで、これはすべて完全に機能します。無効な XML に関する Deserialize 呼び出しでエラーが発生し、ドキュメントの最後の文字について不平を言います: XML ドキュメントにエラーがあります (92, 18)。内部例外は、「ルート レベルのデータが無効です。92 行目、18 番目の位置」です。ドキュメントはデバッグ モードで生成されたものと同じで、どのブラウザでも適切に表示されます。私の推測では、何か他のことが起こっている可能性があり、実際のエラーは何らかの形で隠蔽されていると思われますが、これまでのところ、それはわかりません。アドバイスをいただければ幸いです。

ありがとう、

ゲイリー

4

1 に答える 1

0

XMLファイルを16進エディタまたは他のバイナリエディタにロードし、エンコーディングプリアンブルなどの印刷できない文字がないか確認します。

于 2012-09-06T12:42:01.833 に答える