首页 网络编程 正文

server.mappath ASPNET核心:ServerMapPath的替换

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>&nbsp;</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...