【问题标题】:ASP.NET MVC - error while trying to read and write to text fileASP.NET MVC - 尝试读取和写入文本文件时出错
【发布时间】:2016-03-01 13:45:08
【问题描述】:

目前我正在尝试创建两个从文件读取和写入同一文件的控制器方法:

public ActionResult UploadText(string name)
{
    var path = Path.Combine(Server.MapPath("~/text/"), name);

    var fileContents = System.IO.File.ReadAllText(path);
    ViewData["text"] = fileContents;
    ViewData["textName"] = name;

    return View();
}

[HttpPost]
public ActionResult TextPost(string textName)
{
    string text = Request["text-content"];
    var path = Path.Combine(Server.MapPath("~/text/"), textName);

    System.IO.File.WriteAllText(path, text);

    return RedirectToAction("Index");
}

读取文件内容并写入有效,但第二次无法读取,出现File can't be accessed because it is being used by another process错误。

我做错了什么?

【问题讨论】:

  • 这不是死锁,单例也不是解决死锁的办法。
  • @ProgrammingDude 如何正确操作?
  • 如果两个并发请求到达编辑同一个文件会发生什么?
  • @ProgrammingDude File.ReadAllTextFile.WriteAllText 不需要显式关闭文件。
  • 我明白了。很抱歉造成混乱...评论已删除。

标签: c# asp.net asp.net-mvc


【解决方案1】:

System.IO.File.ReadAllText 和 System.IO.File.WriteAllText 都在它们之后关闭文件并根据documentation 完成文件。问题源于网络的异步性质,如果您在文件打开时有多个请求,您将收到您所看到的错误。这里有一些 MSDN examples 可以帮助您入门。

这里还有几个链接供您欣赏

【讨论】:

  • 不幸的是,使用第一个链接的方法得到了相同的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多