【问题标题】:What is the best way to read in a text file from the server in asp.net-mvc在 asp.net-mvc 中从服务器读取文本文件的最佳方法是什么
【发布时间】:2011-09-28 19:13:38
【问题描述】:

在我的一个控制器操作中,我需要读取一个包含大量参考数据的文本文件。现在我只是把它放在“/Content”目录下。

我的问题是:

  1. 这是放置此文件的“正确”位置还是应该将其放在另一个目录中?
  2. 在服务器上的 asp.net-mvc 中读取文本文件的最佳方法是什么?

【问题讨论】:

  • “对”取决于很多事情;大小、性质、更新频率等
  • 使用这个易于在asp.net中实现的库filehelpers.com
  • 真的。使用库来读取文本文件?!

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


【解决方案1】:

如果文件不应该通过 URL 直接可用,你应该把它放在 App_Data 中。

要阅读它,只需使用:

var fileContents = System.IO.File.ReadAllText(Server.MapPath(@"~/App_Data/file.txt"));

【讨论】:

  • 如果文件应该可以公开使用,请将其放在 Content 或 Upload(如果已上传)文件夹中
  • 感谢您的提示。 HostingEnvironment.MapPath(@"~/App_Data/file.txt") 如果 Server 不容易找到也可以。
  • 对我不起作用,因为此结果包括 url 的路由。
  • 当我将项目发布到服务器时对我不起作用,但在调试模式下使用 HostingEnvironment.MapPath 有效
  • 仅在 cshtml 文件本身中创建 ViewBag.Property 是否存在任何架构问题,或者是否应该从控制器提供此文件内容?对于某些页面,我有几个带有静态文本的文件(可怜的 CMS),我认为它不适合数据库,因为数据很少会改变。
【解决方案2】:

好的,这样对我有用(VS2017)

  1. 将 file.txt 的 Build Action 设置为 Content
  2. 检查复制到输出目录是否设置为“不复制”
  3. 使用HostingEnvironment.MapPath(@"~/App_Data/file.txt")(感谢洪评论)

    var fileContents = 
        System.IO.File.ReadAllText(HostingEnvironment.MapPath(@"~/App_Data/file.txt"));
    

【讨论】:

  • 这似乎是 2017+ 的答案
猜你喜欢
  • 2012-06-10
  • 2021-01-14
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 2013-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多