我们的网站托管在中等信任级别,托管服务提供商拒绝给予我们完全信任。我们的代码尝试使用以下代码片段反序列化代码,但失败并出现reflectionpermission错误。在调试时,我得到“XML文档中存在错误(71,6)。”错误。完全信任它完美无缺。在我们决定转移到完全信任托管服务提供商之前,请有人建议我如何解决这个问题。
public static T Decrypt<T>(Stream stream)
{
Rijndael rij = Rijndael.Create();
rij.Key = key;
rij.IV = iv;
T obj = default(T); // assigns null if T is a reference type, or 0 (zero) for value types
using (CryptoStream cs = new CryptoStream(stream, rij.CreateDecryptor(), CryptoStreamMode.Read))
{
using (GZipStream zs = new GZipStream(cs, CompressionMode.Decompress))
{
XmlSerializer xs = new XmlSerializer(typeof(T));
obj = (T)xs.Deserialize(zs);
zs.Close();
}
cs.Close();
}
return obj;
}
答案 0 :(得分:1)
打开项目属性并将“生成序列化程序集”设置为“on”。这将使编译器在编译时生成序列化程序集,而不是动态生成。只需确保部署序列化程序集。