如何在MVC应用程序中打开文本文件?

时间:2013-08-21 11:01:02

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

我想从Text file ::

中获取Text数据

为此,我使用了像::

这样的代码
 public ActionResult Log()
 {
    StreamReader reader = new StreamReader(Server.MapPath("~/Views/Builder/TestLogger.txt"));
    return View(reader);
}

我从“Log4Net”制作了这个文本文件。 我想知道如何在MVC应用程序的“视图”或“操作”中获取此文本文件的内容。

3 个答案:

答案 0 :(得分:10)

您可以使用此代码:

public ActionResult Log()
{
    var fileContents = System.IO.File.ReadAllText(Server.MapPath("~/Views/Builder/TestLogger.txt"));
    return Content(fileContents);
}

答案 1 :(得分:1)

您可以使用ContentResult,它用于从控制器操作返回文本内容。

[HttpGet]
public ActionResult Log() {         
     try {
        string content = string.Empty;
        using (var stream = new StreamReader(Server.MapPath("~/Views/Builder/TestLogger.txt"))) {
          content = stream.ReadToEnd();
        }
        return Content(content);
     }
     catch (Exception ex) {
       return Content("Something ");
     }
} 

答案 2 :(得分:1)

根据您对其他答案的评论,您尝试使用的日志文件目前似乎已被服务器锁定。它可能会打开并写入日志文件,因为您已经启动了一个记录的请求,因此您阻止自己阅读它。

假设您正在使用FileAppender,在实例化记录器时设置appender.LockingModel = FileAppender.MinimalLock应该允许在没有记录任何内容时访问该文件,而不是log4net进程在保持其锁定时运行

如果在运行前设置了所有属性,也可以在配置中设置:

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

您不是第一个遇到此问题的人:http://hoenes.blogspot.com/2006/08/displaying-log4net-log-file-on-aspnet.html