在 asp.net-mvc 中从服务器读取文本文件的最佳方法是啥

Posted

技术标签:

【中文标题】在 asp.net-mvc 中从服务器读取文本文件的最佳方法是啥【英文标题】: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”目录下。

我的问题是:

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

【问题讨论】:

“对”取决于很多事情;大小、性质、更新频率等 使用这个易于在asp.net中实现的库filehelpers.com 真的。使用库来读取文本文件?! 【参考方案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)

    将 file.txt 的 Build Action 设置为 Content 检查复制到输出目录是否设置为“不复制”

    使用HostingEnvironment.MapPath(@"~/App_Data/file.txt")(感谢洪评论)

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

【讨论】:

这似乎是 2017+ 的答案

以上是关于在 asp.net-mvc 中从服务器读取文本文件的最佳方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

在 .NET 中开发新的 RESTful Web 服务——我应该从哪里开始? ASP.NET-MVC,WCF?

将 ant 性能分析器附加到 asp.net-mvc 站点失败

在 asp.net-mvc 中,查询字符串太长会导致 404 File not found 错误吗?

如何在 asp.net-mvc 控制器中集中授权逻辑?

如何在 Flutter 中从 firebase 存储读取和写入文本文件?

ASP.NET-MVC中Entity和Model之间的关系