我有一些html文件作为常规网站的一部分,已经移植到asp.net mvc。在我的代码中,我需要读取和编写这些html文件并将它们粘贴在一个简单的编辑器中
为了能够从磁盘读取和写入此文件,我有一个硬编码路径,但这似乎不适用于asp.net mvc,除非我做这样的事情:
写作:
string _urlDirectory = @"c:\hosting\MySite\Views\Members\newsletters\test.html";
System.IO.File.WriteAllText(_urlDirectory, htmlData_);
读:
string url = @"c:\hosting\MySite\Views\Members\newsletters\test.html";
var req = WebRequest.Create(url);
var response = req.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream());
string htmlData_ = sr.ReadToEnd();
我正在将我的网站从一个数据中心移动到另一个数据中心,目录结构正在发生变化。而不是仅仅将硬编码路径更改为另一个硬编码路径,我想看看是否有更相对的方式来引用这些文件。
答案 0 :(得分:1)
如果是我,我会将信息存储在数据库中。这种方式要容易得多,从我的角度来看,数据库服务器或Web服务器上是否消耗了磁盘空间并不重要。另一方面,如果文件是相对静态的 - 即大量读取但只有少量写入和它们对所有用户都是通用的(站点文件不是每个用户文件),那么你可以考虑将它们放在Content目录中。我经常在内容中创建一个名为static的子目录,仅用于此类文件,但我通常不提供从站点编辑它们的方法(可编辑内容将在数据库中)。通过这种方式,您可以构建它们的路径。
对于它的价值,您应该只是打开路径并阅读它们,而不是使用WebClient。
string url = Url.Content( "~/content/newsletters/test.html" );
string path = Server.MapPath( url );
StreamReader sr = new StreamReader(path);
string htmlData_ = sr.ReadToEnd();
注意:您可能需要创建UrlHelper,我不认为它是Controller上的属性。