1年間のように、これまで機能していたこのコードを添付します。
// prepare serializer (XSContent)
XmlSerializer serializer = new XmlSerializer(typeof(XSContent));
using (TextWriter textWriter = new StreamWriter(this.fileName, false, Encoding.UTF8))
{
// prepare the content for xml serialization
XSContent content = new XSContent();
content.UserList = XSConverter.ConvertList<XSUser, TBSUser>(input.UserList);
content.GroupList = XSConverter.ConvertList<XSGroup, TBSGroup>(input.GroupList);
// perform serialization
serializer.Serialize(textWriter, content);
}
しかし、今日、より多くのデータでテストした同じコード: xml の結果が無効になっています (コンテンツ全体の最後にある「残り物」に注意してください):
<?xml version="1.0" encoding="utf-8"?>
<Content xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<UserList>
<User UserID="CI-0123">
{...}
</User>
{...}
</UserList>
<GroupList>
<Group GroupID="TEST01">
<GroupName>Test</GroupName>
<UserList>
<UserID>CI-0123</UserID>
</UserList>
</Group>
{...}
</GroupList>
</Content>rID>AT-TEST-2348</UserID>
<UserID>AT-TEST-2349</UserID>
<UserID>AT-TEST-2350</UserID>
これは私を夢中にさせ、立ち往生しています。どこを探せばいいと思いますか? 私は何を間違っていますか?
この xml ファイルは 200Mb 以下であることに注意してください。また、不明な点がある場合は、さらに情報を提供できます。
EDIT1: 干渉する可能性のある既存のファイルはありません。ファイルは私のテストで新規作成されます!
EDIT2:最後に
aを追加するtextWriter.WriteLine("XYZ")
と、直後に表示されます</Content>
が、XYZの後にゴミが表示されます(のように</Content>XYZ>AT-TEST-2348</UserID>
:)
EDIT3: 非常に奇妙です。バッファーを 8192 に増やしたところ、問題なく動作しました。その後、4096 に戻り、正常に動作し続けました。私はこのFileOptions.SequencialScanを見て、「正しい操作はまだ隔離されています」と書いています。うーん、これは何かの間違いかな(?)
ありがとう