暗号化された XML 文字列として送信する必要があるシリアル化されたオブジェクトがあります。シリアル化されたオブジェクトを整形式の XML ファイルに保存することはできますが、これは私が望むものではありません。サンプル文字列に対して Rijndael の暗号化/復号化が機能するようになりました。
Person person = new Person("Irish", "Chieftain");
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Person));
// Write serialized XML to file
System.Guid guid = System.Guid.NewGuid();
StreamWriter streamWriter
= new StreamWriter(@"C:\application" + "_" + guid.ToString() + ".xml")
xmlSerializer.Serialize(streamWriter.BaseStream, person);
暗号化する前にブラウザに XML 文字列を表示して、正しい暗号化文字列が他のマシンの復号化メソッドに送信されていることをテストできるようにしたいと考えています。
私はこれを1週間打ち負かしており、次のようなSOに関する他の回答に目を向けました。ASP.NETで XMLを返すにはどうすればよいですか?
生成された XML を文字列としてブラウザに表示するための正しい構文を誰かに教えてもらえますか?
[更新] XML をレンダリングしようとしているのは次のとおりです。
MemoryStream memoryStream = new MemoryStream();
XmlTextWriter xmlWriter2 = new XmlTextWriter(memoryStream, Encoding.UTF8);
xmlWriter2.Formatting = Formatting.Indented;
xmlSerializer.Serialize(xmlWriter2, person);
memoryStream = (MemoryStream) xmlWriter2.BaseStream;
UTF8Encoding encoding2 = new UTF8Encoding();
stringData = encoding2.GetString(memoryStream.ToArray());
Response.ContentType = "text/xml";
Response.Write(stringData);
[更新 2]
「text/xml」コンテンツ タイプを削除すると、ソースを表示すると次のようになります (これは正しいですか?)。
<?xml version="1.0" encoding="utf-8"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FirstName>Irish</FirstName>
<SecondName>Chieftain</SecondName>
</Person>
【アップデート3】
作業バージョン:
#region Display original string
// Write serialized XML to a string - Display purposes.
MemoryStream memoryStream = new MemoryStream();
XmlTextWriter xmlWriter2
= new XmlTextWriter(memoryStream, Encoding.UTF8);
xmlWriter2.Formatting = Formatting.Indented;
xmlSerializer.Serialize(xmlWriter2, person);
memoryStream = (MemoryStream) xmlWriter2.BaseStream;
UTF8Encoding encoding2 = new UTF8Encoding();
stringData = encoding2.GetString(memoryStream.ToArray());
Response.Clear();
Response.ContentType = "text/xml";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetAllowResponseInBrowserHistory(true);
Response.Write(stringData);
Response.End();
#endregion