2

我想从文本文件中获取文本数据::

为此,我使用了类似 ::

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

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

4

3 回答 3

10

您可以使用以下代码:

public ActionResult Log()
{
    var fileContents = System.IO.File.ReadAllText(Server.MapPath("~/Views/Builder/TestLogger.txt"));
    return Content(fileContents);
}
于 2013-08-21T11:05:11.513 回答
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 ");
     }
} 
于 2013-08-21T11:04:40.773 回答
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

于 2013-08-21T20:22:14.950 回答