ASPNET核心:ServerMapPath的替换
博客文章展示了如何在ASP.NET Core中组织应用程序和公共Web文件以及如何从Web应用程序访问它们。
ASP.NET Core为文件提供了两个不同的位置:
内容根 - 这是应用程序二进制文件和其他私有文件的保存位置。Web根目录 - 这是公共文件的保存位置(Web项目中的wwwroot文件夹)。默认情况下,Web根位于内容根目录下。但是也存在Web根位于其他位置的部署。我以前在Azure Web Apps上看到过这样的部署。某些ISP也可能在树中使用不同的目录来存储应用程序文件和Web根目录。
在代码中获取内容和Web根目录
内容根和Web根目录的路径可通过代码中的IHostingEnvironment获得,如此处所示。
请注意内容根和wwwroot如何位于机器中完全不同的位置。
设置Web Root的位置
要为Web根目录设置位置,我们需要在应用程序根文件夹中使用hosting.json 文件。此外,我们需要一些代码包含在文件中 - 至少对于Kestrel而言。我的hosting.json 在这里显示。
{
"webRoot": "c:\\temp\\wwwroot\\"
}
它在程序启动时加载(Program.cs文件)。我使这个文件可选,所以当托管文件丢失时我的应用程序不会崩溃。
public class Program
{
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.AddJsonFile("hosting.json", optional: true)
.Build();
CreateWebHostBuilder(args).UseConfiguration(config)
.UseKestrel()
.Build()
.Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
如果没有托管文件,则使用默认配置,ASP.NET Core期望Web根位于应用程序的内容根目录下。
总结
虽然我们Server.MapPath()在ASP.NET中没有 调用,但我们有IHostingEnvironment,它为我们提供了应用程序内容根和Web根目录的路径。这些是提到的位置的完整路径,而不是URL。如果需要,我们可以使用这些路径从两个位置读取文件。
ASPNET Web Pages-文件
使用文本文件
在前面的章节中,我们已经了解到网页数据是存储在数据库中的。
您也可以把站点数据存储在文本文件中。
用来存储数据的文本文件通常被称为平面文件。常见的文本文件格式是 .txt、.xml 和 .csv(逗号分隔值)。
手动添加一个文本文件
在下面的例子中,您将需要一个文本文件。
在您的网站上,如果没有 App_Data 文件夹,请创建一个。在 App_Data 文件夹中,创建一个名为 Persons.txt 的文件。
添加以下内容到文件中:
Persons.txt
George,Lucas
Steven,Spielberg
Alfred,Hitchcock
显示文本文件中的数据
下面的实例演示了如何显示一个文本文件中的数据:
实例
@{
var dataFile = Server.MapPath("~/App_Data/Persons.txt");
Array userData = File.ReadAllLines(dataFile);
}
<!DOCTYPE html>
<html>
<body>
<h1>Reading Data from a File</h1>
@foreach (string dataLine in userData)
{
foreach (string dataItem in dataLine.Split(','))
{@dataItem <text> </text>}
<br />
}
</body>
</html>
运行实例 »
实例解释
使用 Server.MapPath 找到确切的文本文件的路径。
使用 File.ReadAllLines 打开文本文件,并读取文件中的所有行到一个数组中。
数组中的每个数据行 中的数据项 的数据被显示。
显示 Excel 文件中的数据
使用 Microsoft Excel,您可以将一个电子表格保存为一个逗号分隔的文本文件(.csv 文件)。此时,电子表格中的每一行保存为一个文本行,每个数据列由逗号分隔。
in可以使用上面的实例读取一个 Excel .csv 文件(只需将文件名改成相应的 Excel 文件的名称)。
相关问答
怎样实现从Web页直接写入/读取Access数据库内的数据?这才是在ASP里连接ACCESS的代码connstr="DBQ="+server.mappath("数据库名(如果和这页面是不同文件夹的话就如:JJ/123.m...
asp上传单个图片的最简单代码是什么?需要三个文件:第一个(upload.asp)第二个文件(uploadsave.asp)setupload=newupload_5xsoftsetfile=upload.file(&quo...
如何查看access数据库的用户名密码?由于问题不明确,现提示两种查看access数据库密码的情况:一、access数据库文档保护密码access数据库文件是可以用密码保护的,但并不涉及用户名,只是纯粹的文...
数据库如何存取图片?数据库存图片的方式以下两种:在数据库中存储图片文件的文件名或存储路径(本地路径或者网络路径)这是最常用的方式,即是将图片的存储的完整路径或文件名以字...
关于asp读取access数据库里的数据?首先要打开数据库,以下是一种方法:<%DimConnDimConnStrConnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=...
用ASP.NET怎么写文件上传和下载的代码啊?可以教教我吗?stringfileURL=this.Server.MapPath("你要下载的文件路径");//文件路径,可用相对路径FileInfofileInfo=newFi...
如何制作网站后台?首先你得先去系统的看一下数据库的sql语言,知道是怎么实现的数据连接,读取,和查询以及更新的!初步了解一下vb以及java。我觉得用vb编的后台还是占...
更新jscript intellisense时出错对象不支持此属性或方法2139[回答]STRSQL="DBQ="+SERVER.MAPPATH("../DATA/JFARTICLE.MDB")+";DRIVER={MICROSOFTA...
如何设计一个全局异常处理器?首先楼主从事于.NET开发所以就写个.NET的全局异常处理器,哪MVC来说1,建立MyExecptionAttribute.cs类,写入如下代码:usingSystem;using...
有谁能回答一下吗!!可靠海关数据在线查询采购,海关数据在...[回答]没有fso,好像不能%dbname=request(db)backname=request(bk)'备份setfsoObj=Server.createobject(Scripting.File...