C# 无法访问关闭的文件错误

C# 无法访问关闭的文件错误,c#,encryption,C#,Encryption,尝试反序列化为XML时出现错误“无法访问关闭的文件”。 我有一个加密的文件。我解密文件,并尝试反序列化它时,我得到这个错误。 它在没有加密和解密的情况下运行良好 XmlSerializer xmlSerializer = new XmlSerializer(typeof(Models.Test)); var fileLocStream = FileManipultions.DecryptToStream(fileLoc); var testResult = (Models.Test)xmlSer

尝试反序列化为XML时出现错误“无法访问关闭的文件”。 我有一个加密的文件。我解密文件,并尝试反序列化它时,我得到这个错误。 它在没有加密和解密的情况下运行良好

XmlSerializer xmlSerializer = new XmlSerializer(typeof(Models.Test));
var fileLocStream = FileManipultions.DecryptToStream(fileLoc);
var testResult = (Models.Test)xmlSerializer.Deserialize(FileManipultions.DecryptToStream(fileLoc));


 public static Stream DecryptToStream(string inputFilePath)
        {
            try
            {
                string EncryptionKey = ConfigurationManager.AppSettings["EncDesKey"].ToString();
                CryptoStream cs;
                using (Aes encryptor = Aes.Create())
                {
                    Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
                    encryptor.Key = pdb.GetBytes(32);
                    encryptor.IV = pdb.GetBytes(16);

                    using (FileStream fsInput = new FileStream(inputFilePath, FileMode.Open))
                    {
                        cs = new CryptoStream(fsInput, encryptor.CreateDecryptor(), CryptoStreamMode.Read);
                    }
                }
                return cs;
            }
            catch (Exception ex)
            {
                Logger.LogException(ex.Message, System.Reflection.MethodBase.GetCurrentMethod().ToString());
                return null;
            }
        }
在方法退出之前,您正在关闭fsInput(因此也是cs)。当方法的调用方获得流时,它就关闭了。使用for FileStream将使用cs流的代码移动到

或者,去掉DecryptoStream()中的所有using语句,并使您的类实现IDisposable,这样您就可以在完成流的使用时进行清理