1

我们的网站托管在中等信任级别,托管服务提供商拒绝给予我们完全的信任。我们的代码尝试使用以下代码片段反序列化代码,但由于反射权限错误而失败。调试时,我得到“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;
    }
4

1 回答 1

1

打开项目属性并将“生成序列化程序集”设置为“开启”。这将使编译器在编译时而不是在运行时生成序列化程序集。只要确保部署序列化程序集。

于 2011-06-18T14:50:36.517 回答