当前位置: 首页 > 最新文章 > 正文

ASP.NET核心:Server.MapPath的替换

博客文章展示了如何在ASP.NET Core中组织应用程序和公共Web文件以及如何从Web应用程序访问它们。ASP.NET Core为文件提供了两个不同的位置:内容根 - 这是应用程序二进制文件和其他私有文件的保存位置。但是也存在Web根位于其他位置的部署。我以前在Azure Web Apps上看到过这样的部署。某些ISP也可能在树中使用不同的目录来存储应用程序文件和Web根目录。此外,我们需要一

admin

博客文章展示了如何在ASP.NET Core中组织应用程序和公共Web文件以及如何从Web应用程序访问它们。ASP.NET Core为文件提供了两个不同的位置:内容根 - 这是应用程序二进制文件和其他私有文件的保存位置。但是也存在Web根位于其他位置的部署。我以前在Azure Web Apps上看到过这样的部署。某些ISP也可能在树中使用不同的目录来存储应用程序文件和Web根目录。此外,我们需要一些代码包含在文件中 - 至少对于Kestrel而言。我的hosting.json在这里显示。{"webRoot": "c:\\temp\\wwwroot\\"}它在程序启动时加载。我使这个文件可选,所以当托管文件丢失时我的应用程序不会崩溃。public class Program{public static void Main{var config = new ConfigurationBuilder().AddJsonFile.Build();CreateWebHostBuilder.UseConfiguration.UseKestrel().Build().Run();}public static IWebHostBuilder CreateWebHostBuilder =>WebHost.CreateDefaultBuilder.UseStartup();}如果没有托管文件,则使用默认配置,ASP.NET Core期望Web根位于应用程序的内容根目录下。这些是提到的位置的完整路径,而不是URL。

博客文章展示了如何在ASP.NET Core中组织应用程序和公共Web文件以及如何从Web应用程序访问它们。

ASP.NET Core为文件提供了两个不同的位置:

  • 内容根 - 这是应用程序二进制文件和其他私有文件的保存位置。
  • Web根目录 - 这是公共文件的保存位置(Web项目中的wwwroot文件夹)。

默认情况下,Web根位于内容根目录下。但是也存在Web根位于其他位置的部署。我以前在Azure Web Apps上看到过这样的部署。某些ISP也可能在树中使用不同的目录来存储应用程序文件和Web根目录。

ASP.NET核心:Server.MapPath的替换

在代码中获取内容和Web根目录

内容根和Web根目录的路径可通过代码中的IHostingEnvironment获得,如此处所示。

ASP.NET核心:Server.MapPath的替换

请注意内容根和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。如果需要,我们可以使用这些路径从两个位置读取文件。


上一篇: 二连浩特市蒙古族小学2022年预算公开报告 下一篇:PHP中定义字符串有哪些方法(php的数组函数)
返回顶部