Hej,
Jeg har to metoder, der henholdsvis skal serialisere og deserialisere filer.
Mit problem er så blot at jeg skal kryptere filerne, så man ikke umiddelbart kan få adgang til indholdet.
Filerne bliver rigtigt nok krypteret og serialiseret og også deserialiseret, med mindre jeg genstarter programmet. Så vil den nemlig ikke deserialisere.
Min kode ser således ud:
// Nøgle:
static DESCryptoServiceProvider key = new DESCryptoServiceProvider() { Key = System.Text.ASCIIEncoding.ASCII.GetBytes("Hejsa du") };
// Serialiser. Ikke noget problem.
public static void SerializeObject<T>(string filename, T objectToSerialize)
{
CheckDir();
using (FileStream fs = File.Open(dir + filename + ".dbdat", FileMode.Create))
{
using (CryptoStream cs = new CryptoStream(fs, key.CreateEncryptor(), CryptoStreamMode.Write))
{
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(cs, objectToSerialize);
}
}
}
// Deserialiser, problem når programmet åbnes igen.
public static T DeSerializeObject<T>(string filename)
{
string file = dir + filename + ".dbdat";
CheckDir();
if (File.Exists(file))
{
using (FileStream fs = File.Open(file, FileMode.Open))
{
using (CryptoStream cs = new CryptoStream(fs, key.CreateDecryptor(), CryptoStreamMode.Read))
{
BinaryFormatter bf = new BinaryFormatter();
return (T)bf.Deserialize(cs);
}
}
}
else
{
return default(T);
}
}
Når jeg kalder metoden DeSerializeObject, efter genstart af programmet, får jeg en af to fejl meddelser:
ArgumentNullException:
Value must not be null
Argument: Converter
Og
DeserializationException:
No Top object.
Hvad er det lige, der går galt?