2011-06-18 33 views
1

我们的网站托管在中等信任级别,托管提供商拒绝给予我们完全信任。我们的代码尝试使用以下代码片断对代码进行反序列化,但因反射许可错误而失败。在调试时,我得到“XML文档中存在错误(71,6)。”错误。它在完全信任的情况下工作得很好。在我们决定迁移到完全托管托管服务提供商之前,请有人建议我如何解决这个问题。XmlDeserialization在中等信任级别失败

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; 
    } 

回答

1

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

+0

我试过你对项目和所有依赖项目的建议,但似乎没有工作。仍然收到相同的错误。 – user804604