C# 行动可以';无法完成,因为文件已在IIS工作进程中打开

C# 行动可以';无法完成,因为文件已在IIS工作进程中打开,c#,asp.net,.net,c#-4.0,file-upload,C#,Asp.net,.net,C# 4.0,File Upload,我正在为用户上传图像并将其保存在指定位置。该代码在正常情况下工作正常,即用户选择图像并保存,即可工作 当用户选择一个图像时(可能是错误的图像)&不保存它,但再次选择一个新图像并保存它。 这个场景给了我一个错误: “该进程无法访问该文件,因为另一进程正在使用该文件。” 当我试图在出错时从该位置删除图像时,无法删除文件,并显示以下消息: “无法完成该操作,因为该文件已在IIS工作进程中打开 关闭文件,然后重试。“ 代码如下: try {

我正在为用户上传图像并将其保存在指定位置。该代码在正常情况下工作正常,即用户选择图像并保存,即可工作

用户选择一个图像时(可能是错误的图像)&不保存它,但再次选择一个新图像并保存它。 这个场景给了我一个错误:

“该进程无法访问该文件,因为另一进程正在使用该文件。”

当我试图在出错时从该位置删除图像时,无法删除文件,并显示以下消息:

“无法完成该操作,因为该文件已在IIS工作进程中打开 关闭文件,然后重试。“

代码如下:

            try
            {
                if (!Directory.Exists(folder))
                    Directory.CreateDirectory(folder);

                msf = new MemoryStream();
                bytes=FileUpload1.FileBytes;
                msf.Write(bytes, 0, bytes.Length);

                using (FileStream stream = new FileStream(folder + "/" + filename, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite))
                {
                    //converting any graphic file type to jpeg format
                    Image img = Image.FromStream(msf);
                    img.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);

                    msf.WriteTo(stream);
                    IsuploadSuccess = true;
                    img.Dispose();
                }
            }
            catch
            {
                IsuploadSuccess = false;
            }
            finally
            {
                if (msf != null)
                {
                    msf.Close();
                    msf.Dispose();
                }
            }
我已尝试在文件流中添加“FileAccess.ReadWrite”&“FileShare.ReadWrite”,但对文件流中的所有选项都不起作用


请帮助…

我最终改变了解决问题的方法,摆脱了挑战的根源。我用UserID(unique)和CurrentDateTime更改文件名,并将其转换为字符串并存储到temp文件夹,直到用户保存更改。对于挑战场景,每次都会形成不同的文件。保存用户创建的临时文件夹中的每个文件(前面有唯一的用户ID)后,将被删除,并将最后的更改保存到相应的目录。

是否也可以尝试处理该文件流。@Mahesh使用{}块本身在作用域结束后处理对象。但不管怎样我也试过了。。