在 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 错误吗?