我正在使用 FileStream 将画布图像保存到服务器。它第一次运行良好,但如果用户在同一会话期间再次访问该页面(不关闭浏览器),则会引发错误“进程无法访问文件 'C:\inetpub\wwwroot\CarmelFinancialWeb\Contracts\MyUniqueImageFileName. png',因为它正被另一个进程使用。” 我尝试在 FileStream 上使用 close 和 dispose ,但这仍在发生
流程: - 用户进入 AssignContract 页面,在画布上签名,点击保存按钮。- 图像被保存到文件 - 用户再次点击保存按钮(即使在等待几分钟后) - 错误消息指出文件被另一个进程使用。
[AuthorizeAdmin]
[HttpPost]
public ActionResult AssignContract(string ID, ModelContract tempCurrentContract, string imageData)
{
try
{
if (imageData != null)
{
string fileName = "MyUniqueImageFileName.png";
string fileNameWitPath = Path.Combine(Server.MapPath("~/Contracts"), fileName);
using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create))
{
using (BinaryWriter bw = new BinaryWriter(fs))
{
byte[] data = Convert.FromBase64String(imageData);
bw.Write(data);
bw.Close();
bw.Dispose();
}
fs.Close();
fs.Dispose();
}
}
}
catch (Exception ex)
{
throw ex;
}
...
更新
对此没有任何反馈。有人对如何防止文件被锁定或如何解锁文件有建议吗?谢谢你。